1

我可以使用 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)
4

1 回答 1

0

由于您正在从一种数据类型转换为另一种数据类型,因此格式正在发生变化。我对 HEIC 不太熟悉,但它可能只是一个较小的文件大小,具有您为 JPEG 设置的压缩参数。

维基百科对此有以下说法

使用 HEVC 的 HEIF 图像比同等质量的 JPEG 需要更少的存储空间。

因此,除非您想降低质量,否则甚至可能无法获得更小的图像(注意:我不知道 HEIC/HEIF 是什么类型)。

至于 base64 编码字符串,您可以根据以下问题读取二进制数据并将其转换为 base64:Python:如何从二进制转换为 base 64 并返回?

于 2021-12-02T11:47:51.923 回答