1

我想将输入图像调整为固定大小。然后我想将调整大小的图像文件的全部内容放在缓冲区中以供进一步使用,例如将其与其他缓冲区(数据)一起附加。

目前我正在使用以下python函数进行操作,

def get_resize_img(img_file):
    img = Image.open(img_file)
    img = img.resize((640,960), Image.NEAREST)
    img.save("tmp_out.jpg")
    fp = open("tmp_out.jpg", "rb")
    data = fp.read()
    fp.close()
    print "img sz:", len(data)
    return data

有没有更好的方法来实现这一点,而无需写入虚拟文件(tmp_out.jpg)并从中读取。

-莫汉

4

3 回答 3

0
Import StringIO

def get_resize_img(img_file):
    buffer = StringIO.StringIO()
    img = Image.open(img_file)
    img = img.resize((640,960), Image.NEAREST)
    format = "YOUR_FORMAT" // JPG,PNG,etc.
    img.save(buffer,format)
    return buffer.getvalue()
于 2012-07-25T05:11:44.087 回答
0

我想你可以使用getdata来获取图像数据,这实际上是图像缓冲区。然后您可以使用 重建图像frombuffer。或者,也许您可​​以只返回调整大小的 Image 对象并稍后使用它。

你可以在这里查看文档

于 2012-07-25T05:13:58.897 回答
0

如果您使用的是 numpy,那么可以完成以下操作

data = numpy.asarray(im)
于 2012-07-25T05:17:46.103 回答