我发现Instagraph PHP库(GitHub,NetTuts)用于照片过滤器。但是,我发现在我的盒子上它不会输出与NetTuts上显示的图像相同的图像。因为我对图片过滤器或ImageMagick的魔法没有进一步的了解,所以我需要ImageMagick魔术师的帮助:-)为什么我的ImageMagick以不同于预期的结果执行colortoning?
我本地化了这个问题,它必须在colortone
函数内,因为否则过滤器工作正常。我们以烤面包机作为展示,因为它只执行一个colortone转换。 (bash的转义)由colortone PHP function产生
代码:
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
而现在,让我们看看预期结果的烤面包机过滤器:
然而,我的脚本如下产生:
这是一个很大暗,但我不知道为什么。可能只有两个选项来解释此类行为:
- 库的作者在他的库中有一个错误。 (我不这么认为,但仍然有可能...)
- 我的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”后面有一个文件名,但第二个字符串中没有。 – Claudiu 2013-03-12 14:17:02
'self.imagemagick'添加文件名。命令展开为''(-clone 0 -fill#330000 -colorize 100%)(-clone 0 -colorspace gray -negate)-compose blend -define compose:args = 100,0 -composite''第一个字符串基本上是输出从'self.imagemagick'函数中记录。 – 2013-03-12 15:24:04
如果你直接从shell运行imagemagick,你能得到正确的输出吗? – Claudiu 2013-03-12 17:08:18