【问题标题】:Perl Image::Magick get in-memory contentsPerl Image::Magick 获取内存内容
【发布时间】:2013-03-04 07:59:43
【问题描述】:
我正在使用Image::Magick 来修改我的图像。然后我使用HTTP::Request 将图像内容发送到 API。
HTTP::Request 有一个content 方法可以让你设置请求的内容,但显然这需要你在内存中有内容。
我知道我可以通过打开一个文件并读取它来将图像的内容读入一个变量。但是,由于Image::Magick 已经在内存中有图像的内容,有什么方法可以通过我的Image::Magick 对象获取它?谢谢!
【问题讨论】:
标签:
perl
memory
imagemagick
【解决方案1】:
Image::Magick 将图像以自定义格式保存在内存中,以使其操作更加简单和高效。它必须在将数据写入文件之前将数据压缩为 JPEG、PNG 或您请求的任何格式,因此您不能只访问内存中的图像。
但是,模块的ImageToBlob 方法将提供它本应写入磁盘的数据的内存副本,以节省您将其写出并再次读回的麻烦。
请注意,它返回一个图像列表以允许包含多个帧的对象,因此如果您只有一个帧,则必须编写
my @blobs = $image->ImageToBlob;
$request->content($blobs[0]);
或
my ($blob) = $image->ImageToBlob;
$request->content($blob);