我使用 CodeIgniter 1.7 开发了一个照片共享社区网站。成员上传的照片会自动以多种格式调整大小,为此我使用 CodeIgniter Image Manipulation 类。此类内置于框架中,基本上是多个图像处理库的包装器,例如 GD、GD2、ImageMagick 和 NETPBM。在我的主机上,我只能使用 GD2,所以这就是这个问题的所在。
关于我的问题。这是我网站上调整大小的照片的示例。请注意,原件非常大,超过 3000 像素宽:
http://www.jungledragon.com/image/195/female_impala_close-up.html
现在,看看同一张图片,同样调整了大小,在 Flickr 上稍微大一点:
http://www.flickr.com/photos/fledder/3763538865/in/set-72157621744113979
看到戏剧性的不同了吗?我正在努力弥合这个巨大的差距。我做的第一件事是对图像应用锐化滤镜。你可以在这里看到结果:
虽然还不够完美,但至少接近 Flickr 图像的锐度水平。剩下的问题是颜色被冲走,好像它们的饱和度降低了。这已经发生在锐化滤镜之前,所以它必须在 GD2 中。
这个问题对我来说非常重要,但我不知道从哪里看。我发现一些 .NET 线程谈论色度子采样,但我不知道如何在我的设置中处理这些信息。我正在寻找在我的设置限制范围内工作的任何解决方案。
更新:特此原始文件,正如我将它上传到我的网站和 Flickr 一样:
http://www.jungledragon.com/img/DSC07275.jpg
更新2:我很震惊。以一种好的方式。安装 ImageMagick 让我很痛苦,但是在切换到它之后(这是将 'imagemagick' 设置为在 Code Igniter 图像处理类中使用的库的问题,测试图像的结果如下:
ImageMagick 的大小调整完全按照预期进行。颜色被保留,清晰度在那里。是的,我禁用了自定义锐化程序,因为 ImageMagick 不再需要它。最重要的是,该过程更快,内存消耗也更少。还有另一个重要的部分:我无法解释,但我完全没有告诉 ImageMagick 使用特定的颜色配置文件,这是用户 @Alix 建议的。到目前为止,在我的测试中,无论是否使用嵌入式配置文件,颜色信息似乎都受到尊重。输出只是输入的较小版本。ImageMagick 真的那么聪明还是我在做梦?