Perl 模块 Image::Imlib2 保存 gif 时遇到问题
我正在使用 perl 模块 Image:Imlib2 来调整照片大小。代码如下:
#create thumbnail
my $old = Image::Imlib2->load("$upload_dir/$name");
my $new = $old->create_scaled_image(80, 80);
$new->save("$upload_dir/$thumbnail_name");
当我保存 jpg 或 png 文件时,此代码工作正常,但每当我保存 gif 时,都会收到内部服务器错误。这是我在 apache 日志文件中收到的错误:
Image::Imlib2 save error: Unknown error at /path/to/script/script.pl
有什么想法吗?
谢谢!
I'm using the perl module Image:Imlib2 to resize photos. Here is the code:
#create thumbnail
my $old = Image::Imlib2->load("$upload_dir/$name");
my $new = $old->create_scaled_image(80, 80);
$new->save("$upload_dir/$thumbnail_name");
This code works fine when I am saving a jpg or png file, but whenever I save a gif, I get an internal server error. Here is the error I get in my apache log file:
Image::Imlib2 save error: Unknown error at /path/to/script/script.pl
Any Ideas?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为 Imlib2 根本不支持编写 GIF 文件。来自相当旧的邮件列表帖子:
此外,如果您查看源代码,您会看到几个感兴趣的文件:
imlib2-1.4.5/src/modules/loaders/loader_png.c
imlib2-1.4.5/ src/modules/loaders/loader_gif.c
在
loader_png.c
中,您会发现:在
loader_gif.c
中,您会发现:但是没有
save
实现。所以看起来 Imlib2 可以读取 GIF 但不能写入它们,这就是你的麻烦所在。我建议您切换到 GraphicsMagick 和
Graphics::Magick
。 GraphicsMagick 是 ImageMagick 的一个分支,速度更快且错误更少,这是 Flickr 内部使用的,所以它应该足够适合您。不幸的是,GraphicsMagick 使用了有点奇怪的 ImageMagick API,但是您可以轻松地将丑陋的细节隐藏在包装器后面。或者,将所有缩略图保存为 JPEG 或 PNG。
I don't think Imlib2 supports writing GIF files at all. From a rather old mailing list posting:
Furthermore, if you look at the source, you'll see a couple files of interest:
imlib2-1.4.5/src/modules/loaders/loader_png.c
imlib2-1.4.5/src/modules/loaders/loader_gif.c
Inside
loader_png.c
you'll find this:and inside
loader_gif.c
, you'll find:but no
save
implementation. So it looks like Imlib2 can read GIFs but can't write them and that's where your trouble lies.I'd recommend that you switch to GraphicsMagick and
Graphics::Magick
. GraphicsMagick is a fork of ImageMagick that is faster and has fewer bugs, this is what Flickr uses internally so it should be good enough for you. GraphicsMagick unfortunately uses the somewhat strange ImageMagick API but you can hide the ugly details behind a wrapper without too much difficulty.Alternatively, save all your thumbnails as JPEGs or PNGs.