Traceback (most recent call last): File "/Users/zhao.yan/code/PNG2HEIF.py", line 59, in <module> heif_path = convert_to_heif(image_path, target_folder) File "/Users/zhao.yan/code/PNG2HEIF.py", line 36, in convert_to_heif image.save(heif_path, "HEIF") File "/opt/homebrew/lib/python3.9/site-packages/PIL/Image.py", line 2307, in save save_handler = SAVE[format.upper()] KeyError: 'HEIF'
时间: 2024-01-03 19:04:17 浏览: 220
这个错误是因为Pillow库不支持以"HEIF"格式保存图像。Pillow库支持的保存格式可以在 `PIL.Image.register_save()` 方法的文档中查看。
在Python中将PNG图像转换为HEIF格式可以使用 `pyheif` 库。它是一个用于读取和写入HEIF图像文件的Python扩展模块,可通过pip安装:
```
pip install pyheif
```
以下是使用 `pyheif` 库转换PNG图像为HEIF格式的示例代码:
```python
import pyheif
from PIL import Image
# 读取PNG图片
image_path = "example.png"
image = Image.open(image_path)
# 转换为HEIF格式
heif_path = "example.heif"
with open(heif_path, mode='wb') as f:
heif_image = pyheif.encode(
image.convert(mode='RGB').tobytes(),
image.size[0],
image.size[1],
lossless=True
)
f.write(heif_image)
```
在上面的示例中,我们首先使用Pillow库的 `Image.open()` 方法读取PNG图像文件,然后使用 `pyheif.encode()` 方法将其转换为HEIF格式,并将结果写入到新文件中。在 `pyheif.encode()` 方法中,我们将图像转换为RGB模式,然后使用 `tobytes()` 方法将其转换为字节流。最后,我们传递图像的宽度和高度,以及 `lossless=True` 参数来指示编码器使用无损模式。
运行上述代码后,您应该会在指定的输出文件夹中找到转换后的HEIF格式图像。
阅读全文