如何使用 Perl 将图像从表单直接加载到 ImageMagick
How to load image from form directly into ImageMagick with Perl
目前我正在使用以下代码允许用户通过 html 表单上传图像。它创建了图像的副本,然后我将其读入 ImageMagick。但当然,直接将表单中的数据读入 ImageMagick 对象会更好。但是我没能做到。
use Image::Magick;
use MIME::Base64;
$arg = new CGI;
$fetch_photo = param('fileuploadphoto');
($data, $base64) = split /,/, $fetch_photo;
($type) = $data =~ m!data:image/(\w+);base64!;
$decoded = MIME::Base64::decode_base64($base64);
$filename = 'test.jpg';
open(my $file, '>', "$filename") or die "Error cannot open file: $file";
binmode $file;
print $file $decoded;
close($file);
$image = Image::Magick->new;
$image->Read($filename);
感谢 Håkon Hægland 的回答。这非常有效。
use Image::Magick;
use MIME::Base64;
$fetch_photo = param('fileuploadphoto');
($data, $base64) = split /,/, $fetch_photo;
$decoded = MIME::Base64::decode_base64($base64);
$image = Image::Magick->new;
$image->Read(blob => $decoded);
目前我正在使用以下代码允许用户通过 html 表单上传图像。它创建了图像的副本,然后我将其读入 ImageMagick。但当然,直接将表单中的数据读入 ImageMagick 对象会更好。但是我没能做到。
use Image::Magick;
use MIME::Base64;
$arg = new CGI;
$fetch_photo = param('fileuploadphoto');
($data, $base64) = split /,/, $fetch_photo;
($type) = $data =~ m!data:image/(\w+);base64!;
$decoded = MIME::Base64::decode_base64($base64);
$filename = 'test.jpg';
open(my $file, '>', "$filename") or die "Error cannot open file: $file";
binmode $file;
print $file $decoded;
close($file);
$image = Image::Magick->new;
$image->Read($filename);
感谢 Håkon Hægland 的回答。这非常有效。
use Image::Magick;
use MIME::Base64;
$fetch_photo = param('fileuploadphoto');
($data, $base64) = split /,/, $fetch_photo;
$decoded = MIME::Base64::decode_base64($base64);
$image = Image::Magick->new;
$image->Read(blob => $decoded);