我有一个函数,我试图从 request.FILES['image'] 调整照片的大小两次。我也将 image.thumbnail() 与 Parser 一起使用。当我创建一个缩略图时,这很好用,但在我看来,如果我再次重复完全相同的事情,它会在解析器中失败,因为 IOError 无法解析图像。我很困惑。我在内存中创建了 StringIO 文件,而不是按原样使用 Django 的 UploadedFile 对象,它仍然做同样的事情。任何帮助深表感谢。
假设我想在不检索 URL 两次的情况下执行以下两次(使用两种不同的缩略图大小):
import urllib2
from PIL import Image, ImageFile, ImageEnhance
# create Image instance
file = urllib2.urlopen(r'http://animals.nationalgeographic.com/staticfiles/NGS/Shared/StaticFiles/animals/images/primary/kemps-ridley-sea-turtle.jpg')
parser = ImageFile.Parser()
while True:
s = file.read(1024)
if not s:
break
parser.feed(s)
image = parser.close()
# make thumbnail
size = (75, 75)
image.thumbnail(size, Image.ANTIALIAS)
background = Image.new('RGBA', size, (255, 255, 255, 0))
background.paste(
image,
((size[0] - image.size[0]) / 2, (size[1] - image.size[1]) / 2))
background.save('copy.jpg')
例如:
image = parser.close()
image2 = parser.close() # Obviously this doens't work
image2 = image # Obviously this doesn't either but you get what I need to do here
# Do 2 thumbnails with only one original source.
...省略了其他代码...
image.save('copy.jpg')
image2.save('copy.jpg')