我正在使用Perl的Image :: Magick创建缩略图,但是我想将其发送回Base64编码的JSON对象中显示的客户端。如何在不必将文件保存到磁盘的情况下获取Base64字符串?
您不能将标量视为文件句柄吗?
http://metacpan.org/pod/IO::Scalar
my $image_data;
my $fh = IO::Scalar->new(\$image_data);
$thumbnail->Write(file=> $fh, filename=>'thumbnail.jpg');
## Then as in the previous answer...
my $json = JSON->new->utf8;
my $client_data = {
thumbnail => encode_base64( $image_data ),
other_crap => 'poo',
};
my $encoded_client_data = $json->encode( $client_data );
编辑(c / f如何将IO :: Scalar与Image :: Magick :: Read()一起使用?)
这个怎么样:
http://www.imagemagick.org/script/perl-magick.php#blobs
使用Blob
Blob包含的数据直接代表内存中而不是磁盘上的特定图像格式。PerlMagick支持任何这些图像格式的Blob,并提供了将Blob转换为特定图像格式或从特定图像格式转换Blob的方法。
...
ImageToBlob()以其各自的格式返回图像数据。然后,您可以打印它,将其保存到ODBC数据库,将其写入文件或通过管道将其传输到显示程序:
@blobs = $image->ImageToBlob();
open(DISPLAY,"| display -") || die;
binmode DISPLAY;
print DISPLAY $blobs[0];
close DISPLAY;
所以你想要这样的东西:
my ($image_data) = ($image->ImageToBlob())[0];
my $json = JSON->new->utf8;
my $client_data = {
thumbnail => encode_base64( $image_data ),
other_crap => 'poo',
};
my $encoded_client_data = $json->encode( $client_data );
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句