我有以下代码从url获取图像:
im = cStringIO.StringIO(image_buffer)现在,我必须对原始图像执行不同的操作,例如:
Image.open(im).crop(box=(1, 1, 1, 1) 但是这将编辑itsself,所以我不能重用Image.open命令。
因此,我想克隆im对象。我曾尝试使用以下方法:
copy.deepcopy(im)
copy.copy(im)
im[:]但是,所有这些似乎都不起作用,复制者甚至抛出以下异常:
object.__new__(cStringIO.StringI) is not safe, use cStringIO.StringI.__new__()我试图搜索这个错误,但我不清楚为什么它拒绝克隆im对象。
这是用python编写的(使用django框架)
我使用PIL库进行图像处理。
发布于 2014-08-31 09:01:01
只需获取字符串值并使用cStringIO.StringIO创建一个新对象,就可以创建 method文件对象的副本。
new_file = cStringIO.StringIO(original.getvalue())也就是说,将对图像对象的引用存储起来,并将操作应用于该对象:
image = Image.open(im)
image.crop(box=(1, 1, 1, 1))这样,在应用所有转换之后,还可以将映像保存到新文件(内存中或其他文件)。
您可以更容易地使用 method创建图像对象的其他副本。
image = Image.open(im)
image_copy = image.copy()
image.crop(box=(1, 1, 1, 1))在这里,image_copy仍未裁剪。
https://stackoverflow.com/questions/25590456
复制相似问题