一开始从网上其它地方查找到代码是下面这个样子的
import whatimage
import pyheif
from PIL import Image
heic_img_path = "h.heic"
with open(heic_img_path, 'rb') as f:
heic_img = f.read()
img_format = whatimage.identify_image(heic_img)
if img_format in ['heic']:
img = pyheif.read_heif(heic_img)
pi = Image.frombytes(mode=img.mode, size=img.size, data=img.data)
pi.save("heic.jpg", format="jpeg")
但我在ubuntu系统中测试发现,转换后的jpg图片是乱的,因此后面采用下面这种方式,测试是可以成功转换的。
import whatimage
import pyheif
from PIL import Image
from pillow_heif import register_heif_opener
register_heif_opener()
heic_img_path = "h.heic"
with open(heic_img_path, 'rb') as f:
heic_img = f.read()
img_format = whatimage.identify_image(heic_img)
if img_format in ['heic']:
pi = Image.open(heic_img_path)
pi.save("heic.jpg")