翻译ImageMagick将shell脚本转换为Python/PIL脚本



我正在尝试使用convertcmd将一些shell脚本转换为使用PIL的python脚本。

下面是原始的shell脚本:

convert 
-resize 25% 
+repage 
-background white
-quality 95 
-flatten 
-gravity center 
-extent 200x200 
img_a.png img_b.jpg

以下是我目前能翻译的内容:

# Paths
img_a_png_filepath = '/foo/bar/img_a.png'
img_a_name = Path(img_a_png_filepath).stem
img_b_name = f'{img_a_name}.jpg'
img_b_jpg_filepath = f'/foo/bar/{img_b_name}'
# Converting to JPEG    
img_a_png = Image.open(img_a_png_filepath)
# -background white
white_bg = Image.new('RGBA',img_a_png.size ,(255, 255, 255, 255))
white_bg.paste(img_a_png, (0, 0), img_a_png)
white_bg = white_bg.convert('RGB')
white_bg.save(img_b_name, 'JPEG')
# -resize 25%
img_b_jpg = Image.open(img_b_jpg_filepath)
img_b_jpg = img_b_jpg.resize((img_b_jpg.size[0]*0.25, img_b_jpg.size[0]*0.25))
img_b_jpg.save(img_b_name, 'JPEG')

我猜原来的脚本是试图用-gravity centerextent 200x200从中心裁剪,但我不知道如何将这两个选项翻译成PIL。

你就快成功了!你有白色的背景,-flatten(使用paste)和调整大小。

你只需要从中心做-extent,所以…

  • 获得宽度,并将其减半int(im.width/2),并减去100用作左边缘,添加100用作右边缘
  • 获取高度,同样获取顶部和底部

如果小于200x200粘贴到200x200的画布上。

顺便说一下,没有必要像你现在做的那样反复保存图像-只需要继续处理你已经得到的图像。

最新更新