我有一个 Perl 脚本,它抛出以下消息:
Can't locate object method "newFromPng" via package "GD::Image" at ../script/Perl/gestion-redimensionnement-images.pl line 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。
最佳答案
我怀疑你没有安装libpng。如果底层图像库存在且可用,GD 将仅提供 newFromPng()、newFromJpeg() 等方法。您可以使用 can()
use GD;
my $gd = GD::Image->new();
my $ok = $gd->can('png') ? 'Yes' : 'No';
print "$ok\n";
您可以使用 MacPorts 或从源代码手动安装 libpng。
关于perl - 无法通过包 "newFromPng"找到对象方法 "GD::Image",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100317/