无法通过包“GD :: Image”找到对象方法“newFromPng”

时间:2014-01-13 20:02:03

标签: perl gd

我有一个Perl脚本会抛出以下消息:

  

无法通过包“GD :: Image”找到对象方法“newFromPng”   ../script/Perl/gestion-redimensionnement-images.pl第271行。

这是脚本的第271行:

my $gd_original =
    ( lc($extension) eq '.png' ) ? GD::Image->newFromPng($fichier_image)
  : ( lc($extension) eq '.gif' ) ? GD::Image->newFromGif($fichier_image)
  : ( $extension =~ m{\.jpe?g$}i ) ? GD::Image->newFromJpeg($fichier_image)
  :                                  GD::Image->new($fichier_image);

当我使用cpan检查GD是否已正确安装时,我得到:

pan[1]> install GD
CPAN: Storable loaded ok (v2.34)
Reading '/Users/romain/.cpan/Metadata'
  Database was generated on Mon, 13 Jan 2014 18:53:02 GMT
CPAN: Module::CoreList loaded ok (v2.76)
GD is up to date (2.50).

我的配置有问题吗?

我在Mavericks的Mac下运行Perl v5.16。

2 个答案:

答案 0 :(得分:2)

我怀疑你没有安装libpng。如果底层图像库存在且可用,GD将仅提供newFromPng(),newFromJpeg()等方法。您可以使用can()

测试各种格式
use GD;
my $gd = GD::Image->new();
my $ok = $gd->can('png') ? 'Yes' : 'No';
print "$ok\n";

您可以使用MacPorts安装libpng,也可以从源手动安装。

答案 1 :(得分:0)

您是否忘记使用GD模块?

use GD;

尝试一个简单的小例子(使用你自己的png文件):

use GD;

my $fichier_image = 'my.png';
my $gd_original = GD::Image->newFromPng($fichier_image);