perl - 无法通过包 "newFromPng"找到对象方法 "GD::Image"

标签 perl gd

我有一个 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/

相关文章:

php - 灯箱显示垃圾字符而不是图像

perl - 如何告诉 CPAN.pm 将所有模块安装在特定目录中?

java - Unicode 字符 ""有什么特别之处,以至于它破坏了基于大括号的解析器逻辑?

c - gdImageCopy 的图像是灰度的

php - 为什么这个 PNG 图像在 Chrome 和 Firefox 上呈现不同?

php - 如何将非英语字符(如阿拉伯语或波斯语字符)写入图像?

php - 如何在PHP中绘制交互式图像?

mysql - 两个月的 Perl 日期计算

python - 为什么我在 Python 而不是 Perl 中得到 hmac 的错误结果?

Perl、fork、信号量、进程