裁剪图像 - Image.crop函数无效

4 投票
2 回答
9997 浏览
提问于 2025-04-17 04:08

我有一段代码用来裁剪图片

im = Image.open('path/to/image.jpg')

outfile = "path/to/dest_img.jpg"
im.copy()

im.crop((0, 0, 500, 500))
im.thumbnail(size, Image.ANTIALIAS)
im.save(outfile, "JPEG")

但是它似乎没有裁剪图片。我有一张更大的图片,比如说2048 x 1536 像素。

[编辑]

这里也有解决方案,我自己无法回答这个问题,所以在这里添加答案。

其实裁剪操作会返回一个新的图片处理器,我意识到我哪里出错了。我应该在新的处理器中进行裁剪,像下面这样

crop_img = im.crop((0, 0, 500, 500))

完整代码如下:

im = Image.open('path/to/image.jpg')

outfile = "path/to/dest_img.jpg"
im.copy()

crop_img = im.crop((0, 0, 500, 500))
crop_img.thumbnail(size, Image.ANTIALIAS)
crop_img.save(outfile, "JPEG")

注意,在裁剪的那一行之后,有一个 crop_img 的处理器被使用。

2 个回答

2

你肯定想要这样做:

from PIL import Image
im = Image.open('sth.jpg')

outfile = "sth2.jpg"
region=im.crop((0, 0, 500, 500))
#Do some operations here if you want but on region not on im!
region.save(outfile, "JPEG")
6

你在某些语句中忘记给返回值赋值了。

im = Image.open('path/to/image.jpg')

outfile = "path/to/dest_img.jpg"

im = im.crop((0, 0, 500, 500))
im = im.thumbnail(size, Image.ANTIALIAS)
im.save(outfile, "JPEG")

撰写回答