【发布时间】:2013-03-12 13:18:28
【问题描述】:
我找到了用于照片滤镜的 Instagraph PHP 库(GitHub、NetTuts)。但是,我在我的盒子上发现它输出的图像与 NetTuts 上显示的图像不同。因为我对照片滤镜或 ImageMagick 的魔法一无所知,所以我需要你的帮助,ImageMagick 魔术师 :-)
我已将问题本地化,它必须在 colortone 函数内,否则过滤器可以正常工作。让我们以 Toaster 作为展示,因为它只执行一次 colortone 转换。
colortone PHP function(bash 转义)生成的代码:
convert test.jpg \( -clone 0 -fill '#330000' -colorize 100% \) \( -clone 0 -colorspace gray -negate \) -compose blend -define compose:args=100,0 -composite test.jpg
完成过滤的命令序列的其余部分(应该没问题):
convert test.jpg -modulate 150,80,100 -gamma 1.2 -contrast -contrast test.jpg
convert test.jpg \( -size 960.0x960.0 radial-gradient:none-LavenderBlush3 -gravity center -crop 640x640+0+0 +repage \) -compose multiply -flatten test.jpg
convert test.jpg \( -size 960.0x960.0 radial-gradient:#ff9966-none -gravity center -crop 640x640+0+0 +repage \) -compose multiply -flatten test.jpg
现在,让我们看看 Toaster 过滤器的预期结果:
但是,我的脚本会产生以下内容:
颜色要深很多,但我不知道为什么。可能只有两种选择可以解释这种行为:
- 库的作者在他的库中存在错误。 (我不这么认为,但还是有可能的……)
- 我的 ImageMagick 与作者的不同,因此会产生不同的结果。(这是怎么发生的?)
有人知道为什么我的 ImageMagick 会产生不同的结果吗?会不会是一些初始设置?我的 ImageMagick 完全是从标准 Ubuntu 软件包安装的。
$ convert --version
Version: ImageMagick 6.7.7-10 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP
我编译了自己最新的 ImageMagick 上游版本,它产生了相同的错误输出。
$ convert --version
Version: ImageMagick 6.8.3-9 2013-03-15 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2013 ImageMagick Studio LLC
Features: DPC OpenMP
Delegates: bzlib djvu mpeg fontconfig freetype jbig jng jp2 jpeg lcms lqr lzma openexr png ps tiff x xml zlib
【问题讨论】:
-
您可以在调用
self.imagemagick(...)之前先执行print commands并向我们展示输出吗?我还注意到您在第一个字符串中-composite之后有一个文件名,但在第二个字符串中没有。 -
self.imagemagick添加文件名。命令扩展为'( -clone 0 -fill #330000 -colorize 100% ) ( -clone 0 -colorspace gray -negate ) -compose blend -define compose:args=100,0 -composite'第一个字符串基本上是从self.imagemagick函数内部的日志输出。 -
直接从 shell 运行 imagemagick 能得到正确的输出吗?
-
我根据我的进一步调查更改了问题。
-
准确了解作者使用的版本,更重要的是,了解作者使用的配置选项以及用于所述配置选项的库版本将有助于您的诊断。请记住,Imagemagick 利用了几个不同的编程库,其中任何一个都可能影响渲染输出。
标签: imagemagick imagemagick-convert