kouの個人blog

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)