heic转jpg 保留旋转信息python
时间: 2024-10-20 13:12:13 浏览: 1
在Python中,如果你需要将HEIC (High Efficiency Image Coding) 格式的图片转换为JPG,并保持原有的旋转信息,可以使用第三方库如`imageio`和`exifread`。`imageio`用于读取HEIC图像,`exifread`则用于获取和处理EXIF数据,包括旋转角度。
首先,你需要安装这两个库:
```bash
pip install imageio exifread
```
然后,你可以编写一个简单的脚本来实现这个功能:
```python
import imageio
import os
from PIL import Image
import exifread
def convert_heic_to_jpg_with_rotation(input_path, output_path):
# 读取HEIC文件
with imageio.imread(input_path) as img:
# 使用PIL读取EXIF旋转信息
orientation = get_exif_orientation(input_path)
if orientation != 1:
img = rotate_image(img, orientation)
# 转换为RGB模式并保存为JPEG
img_rgb = img.convert('RGB')
img_rgb.save(output_path)
def get_exif_orientation(filepath):
with open(filepath, 'rb') as f:
tags = exifread.process_file(f)
return int(tags.get('Image Orientation', 1))
def rotate_image(image, orientation):
rotation_angle = {
1: 0,
2: 180,
3: -90,
4: -90,
5: 90,
6: 90,
7: -180,
8: 180,
}[orientation]
return image.rotate(rotation_angle, expand=True)
# 示例用法
input_heic = "path/to/your/heic.jpg"
output_jpg = "path/to/save/your/jpg.jpg"
convert_heic_to_jpg_with_rotation(input_heic, output_jpg)
```
在这个例子中,`get_exif_orientation()`函数会读取HEIC图片的EXIF数据,确定其旋转方向;`rotate_image()`函数根据EXIF信息旋转图片。最后,转换后的RGB模式图片会被保存为JPG格式。
阅读全文