gpt4 book ai didi

Perl 模块 Image::Imlib2 保存 gif 的麻烦

转载 作者:行者123 更新时间:2023-12-04 06:05:45 24 4
gpt4 key购买 nike

我正在使用 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

有任何想法吗?

谢谢!

最佳答案

我认为 Imlib2 根本不支持编写 GIF 文件。来自一个相当old mailing list posting :

I discovered that Imlib2 has absolutely NO support for writing out gif files.



此外,如果您查看源代码,您会看到几个感兴趣的文件:
  • imlib2-1.4.5/src/modules/loaders/loader_png.c
  • imlib2-1.4.5/src/modules/loaders/loader_gif.c

  • 内部 loader_png.c你会发现这个:
    char
    load(ImlibImage * im, ImlibProgressFunction progress,
    char progress_granularity, char immediate_load)
    {
    /*...*/
    }

    char
    save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity)
    {
    /*...*/
    }

    和里面 loader_gif.c , 你会找到:
    char
    load(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity,
    char immediate_load)
    {
    /* ... */
    }

    但没有 save执行。所以看起来 Imlib2 可以读取 GIF,但不能写它们,这就是你的麻烦所在。

    我建议您切换到 GraphicsMagickGraphics::Magick . GraphicsMagick 是 ImageMagick 的一个分支,速度更快,错误更少,这是 Flickr 内部使用的,所以它对你来说应该足够好了。不幸的是,GraphicsMagick 使用了有点奇怪的 ImageMagick API,但您可以毫不费力地将丑陋的细节隐藏在包装器后面。

    或者,将所有缩略图保存为 JPEG 或 PNG。

    关于Perl 模块 Image::Imlib2 保存 gif 的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8391765/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com