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