在 python 中将 heic 更改为 jpeg 时文件大小不同
Different filesize when changing heic to jpeg in python
我可以使用 pyheic 库在 python 中轻松地将 HEIC 转换为 JPEG。
但是当它转换为 JPEG 时,文件大小会变大。 (大约 4 次)。我可以减小保存文件的大小吗?
如何获取 base64 编码的字符串而不是保存 JPEG 图片?
我的代码如下:
# -*- coding: utf-8 -*-
import sys
import os
from PIL import Image # pip3 install pillow
import pyheif # pip3 install pyheif
def call(oriPath, defPath):
try:
# if defPath is webp or heic
fileType = oriPath.split(".")[-1]
if fileType == "heic":
heif_file = pyheif.read(oriPath)
image = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)
image.save(defPath, "JPEG")
except:
print(False)
return
print(True)
由于您正在从一种数据类型转换为另一种数据类型,因此格式正在发生变化。我对 HEIC 不太熟悉,但它可能只是一个较小的文件大小,具有您为 JPEG 设置的压缩参数。
wikipedia 对此有如下说法
A HEIF image using HEVC requires less storage space than the equivalent quality JPEG.
因此,除非您想降低质量,否则甚至可能无法获得更小的图像(注意:我不知道 HEIC/HEIF 是什么类型)。
至于 base64 编码的字符串,您可以只读取二进制数据并将其转换为 base64,每个问题:Python: How do I convert from binary to base 64 and back?
我可以使用 pyheic 库在 python 中轻松地将 HEIC 转换为 JPEG。 但是当它转换为 JPEG 时,文件大小会变大。 (大约 4 次)。我可以减小保存文件的大小吗?
如何获取 base64 编码的字符串而不是保存 JPEG 图片?
我的代码如下:
# -*- coding: utf-8 -*-
import sys
import os
from PIL import Image # pip3 install pillow
import pyheif # pip3 install pyheif
def call(oriPath, defPath):
try:
# if defPath is webp or heic
fileType = oriPath.split(".")[-1]
if fileType == "heic":
heif_file = pyheif.read(oriPath)
image = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)
image.save(defPath, "JPEG")
except:
print(False)
return
print(True)
由于您正在从一种数据类型转换为另一种数据类型,因此格式正在发生变化。我对 HEIC 不太熟悉,但它可能只是一个较小的文件大小,具有您为 JPEG 设置的压缩参数。
wikipedia 对此有如下说法
A HEIF image using HEVC requires less storage space than the equivalent quality JPEG.
因此,除非您想降低质量,否则甚至可能无法获得更小的图像(注意:我不知道 HEIC/HEIF 是什么类型)。
至于 base64 编码的字符串,您可以只读取二进制数据并将其转换为 base64,每个问题:Python: How do I convert from binary to base 64 and back?