gpt4 book ai didi

python 在使用例如将 (pdf) 转换为 jpeg 时设置最大文件大小棍棒

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:10 26 4
gpt4 key购买 nike

出于后续处理目的,在 python 中,我将多页 PDF (f) 转换为 JPEG (temp?.jpg):

import os
from wand.image import Image as wimage

with wimage(filename=f,resolution=300) as img:
for i in range(len(img.sequence)):
ftemp=os.path.abspath('temp%i.jpg'%i)
img_to_save=wimage(img.sequence[i])
img_to_save.compression_quality = 100
img_to_save.format='jpeg'
img_to_save.save(filename=ftemp)

我正在使用 wand,因为它能够对 PDF 页面进行排序,但我对 PIL 等持开放态度。

我需要尽可能高的分辨率compression_quality,但我希望每个 JPEG 的大小不超过(比如说)300 kb。

如何限制 JPEG 文件的大小?

在命令行上我会这样做(参见 https://stackoverflow.com/a/11920384/1021819 ):

convert original.jpeg -define jpeg:extent=300kb -scale 50% output.jpg

谢谢!

最佳答案

库有 wand.image.OptionDict 用于管理 -define 属性,但不幸的是所有选项都被 wand.image.Option frozenset 锁定。 恕我直言,这会导致整个功能无法使用。

幸运的是,您可以通过 wand.api 创建一个快速的子类来处理这个问题。

import os
from wand.image import Image
from wand.api import library
from wand.compat import binary

class wimage(Image):
def myDefine(self, key, value):
""" Skip over wand.image.Image.option """
return library.MagickSetOption(self.wand, binary(key), binary(value))


with wimage(filename=f, resolution=300) as img:
for i in range(len(img.sequence)):
ftemp=os.path.abspath('temp%i.jpg'%i)
with wimage(img.sequence[i]) as img_to_save:
img_to_save.myDefine('jpeg:extent', '300kb')
img_to_save.compression_quality = 100
img_to_save.format='jpeg'
img_to_save.save(filename=ftemp)

在不久的将来。 wand.image.Option 将被弃用,您可以简单地调用 img_to_save.options['jpeg:extent'] = '300kb'.

关于python 在使用例如将 (pdf) 转换为 jpeg 时设置最大文件大小棍棒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45322213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com