avif・webp画像をjpgに変換
時にavif・webpで保存されでいる画像データがあります、パソコンから開くこのも面倒くさいし、時に開いても画像の色々が変なこともありますので、しれべで全部jpgに変換するようにツールを作りました。
from Mydef import *
from PIL import Image
import pillow_avif
import os,time
#-----------不常见图片格式转jpg--------------
#avif 转 JPEG (改改也可转其他)
#jfif 转 JPEG
#webp 转 JPEG
#-----------成功--------------
print ("输入转换文件夹:")
url = input()
all_imglist = filelist_x(url)
avif_imglist = {}
jfif_imglist = {}
webp_imglist = {}
for imgname_n in all_imglist :
if imgname_n.endswith("avif") :
avif_imglist[imgname_n] = all_imglist[imgname_n]
elif imgname_n.endswith("jfif") :
jfif_imglist[imgname_n] = all_imglist[imgname_n]
elif imgname_n.endswith("webp") :
webp_imglist[imgname_n] = all_imglist[imgname_n]
if len(avif_imglist)>0 or len(webp_imglist)>0 :
print ("模式[0]--不改名")
print ("模式[1]--按文件修改时间命名")
mode = input()
def rename(mode,img,name) :
if mode == "0":
newfilename = name.replace(name[(name.rfind("."))+1:],"jpg")
return newfilename
elif mode == "1" :
filetime = int((os.stat(img).st_mtime)*100000)
newfilename = str(filetime)+"."+"jpg"
return newfilename
if avif_imglist:
for avif_imgname in avif_imglist :
img = avif_imglist[avif_imgname]
newfilename = rename(mode,img,avif_imgname)
avif_img = Image.open(img)
avif_img.save(img.replace(avif_imgname,newfilename),'jpeg')
os.remove(img)
if jfif_imglist:
for jfif_imgname in jfif_imglist :
if os.path.exists(jfif_imglist[jfif_imgname].replace("jfif",'jpg')) or \
os.path.exists(jfif_imglist[jfif_imgname].replace("jfif",'png')) :
os.remove(jfif_imglist[jfif_imgname])
else :
os.rename(jfif_imglist[jfif_imgname],jfif_imglist[jfif_imgname].replace("jfif",'jpg'))
if webp_imglist :
for webp_imgname in webp_imglist :
img = webp_imglist[webp_imgname]
newfilename = rename(mode,img,webp_imgname)
webp_img = Image.open(img).convert("RGB")
webp_img.save(img.replace(webp_imgname,newfilename),'jpeg')
os.remove(img)