gpt4 book ai didi

python - Pgmagick 按宽度调整图像大小

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

我正在使用graphicsmagick对图像进行简单的操作,例如调整大小、裁剪等,并且我正在尝试通过python使用pgmagick。

为了调整大小,脚本会发出以下命令

gm convert image.jpg -resize 80x ...

根据宽度调整图像大小是我主要关心的问题,上面的命令按我的预期工作,仅考虑调整大小的宽度。使用 pgmagick,我尝试如下所示的相同操作:

import pgmagick as p
img = p.Image(p.Blob(open('image.jpg','rb').read()))
img.scale('80') # or img.scale('80x')

pgmagick 的比例似乎不尊重该参数。上面的代码按宽度或高度缩放图像,以合适的为准。例如,如果图像的尺寸为 240x320,则生成的图像的尺寸为 60x80。就graphicsmagick而言,它的行为类似于

gm convert image.jpg -resize \>80x -resize x80\> ...

如何使用 pgmagick 缩放图像的宽度?

最佳答案

不幸的是,在 pgmagick 中找不到实现“调整大小”的方法,因为它使用 c++ api,目前仅支持缩放操作。

但实现起来却很丑陋:

def resize(new_size):
g = pgmagick.Geometry(new_size) # distinguishes whether width, height or both given
image = pgmagick.Image(img)
rw, rh = image.size()
w, h = g.width(), g.height()
if w and not h:
g.height(int(rh * w * 1.0/rw))
elif h and not w:
g.width(int(rw * h * 1.0/rh))

image.scale(g)

如果宽度对于调整大小很重要,则最终大小将分别根据宽度和高度进行调整。例如:240x360的图像将通过resize('80x')调整大小,然后该函数按360*80/240计算最终高度,并使用图像上的scale为img.scale('80x120'),否则仅使用scale直接生成 53.3x80 的新图像

关于python - Pgmagick 按宽度调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067802/

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