我正在尝试使用convert
cmd将一些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 center
和extent 200x200
从中心裁剪,但我不知道如何将这两个选项翻译成PIL。
你就快成功了!你有白色的背景,-flatten
(使用paste
)和调整大小。
你只需要从中心做-extent
,所以…
- 获得宽度,并将其减半
int(im.width/2)
,并减去100用作左边缘,添加100用作右边缘 - 获取高度,同样获取顶部和底部
- 。
如果小于200x200粘贴到200x200的画布上。
顺便说一下,没有必要像你现在做的那样反复保存图像-只需要继续处理你已经得到的图像。