【问题标题】:create thumbnail of png image using Perl Image::Magic使用 Perl Image::Magic 创建 png 图像的缩略图
【发布时间】:2015-04-21 06:30:58
【问题描述】:

我正在使用下面的代码从大图像中获取缩略图。

我也在使用图像魔法。

$thumbnail_width = 100;
$thumbnail_height = 60;

open my $file, "data2";
$image_data = <$file>;
create_thumbnail($image_data);


sub create_thumbnail {
    my ($image_data, $garb) = @_;
    use Image::Magick;
    #my $image = Image::Magick->new(magick=>'jpg');
    #my $image = Image::Magick->new(magick=>'png');
    #print "===>$image_data<===";
    my $image = Image::Magick->new;
    $error = $image->BlobToImage($image_data);
    print "1--".$error;
    $error = $image->SetAttribute(quality => 80);
    print "2--".$error;
    $error = $image->SetAttribute(compression => 'JPEG');
    print "3--".$error;
    $error = $image->Thumbnail(width => $thumbnail_width, height => $thumbnail_height);
    print "4--".$error;
    my $thumbnail_data = $image->ImageToBlob();

    print "Content-type: image/jpeg\nContent-length: " . length($thumbnail_data) . "\n\n";
    print STDERR "===>$thumbnail_data<=====";
    #print $thumbnail_data;
}

我遇到了错误。

1--异常 425:负或零图像大小 ' @ error/gif.c/ReadGIFImage/13692--3--4--Exception 410: no images definedThumbnail' @error/Magick.xs/XS_Image__Magick_Mogrify/7403Content-type: image/jpeg 内容长度:

我要从中创建缩略图的图像是 PNG 类型的。我使用的是 ImageMagick-6.9.1-2。

【问题讨论】:

    标签: perl imagemagick


    【解决方案1】:

    您只读取直到第一次出现\n 的输入,因此您将不完整/损坏的数据传递给您的create_thumbnail 函数。

    将文件句柄的全部内容加载到标量变量中的规范方法如下所示:

    open my $file, "data2";
    $image_data = do { local $/; <$file> };
    

    但如果local $/ 看起来太深奥,这些是等价的:

    $image_data = join '', <$file>;
    
    use File::Slurp;
    $image_data = read_file("data2");  # don't need $file handle
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2011-03-14
      • 1970-01-01
      • 2018-08-23
      • 2011-01-07
      • 2018-10-31
      • 2014-11-25
      • 1970-01-01
      相关资源
      最近更新 更多