我有以下命令行脚本,可以按照我的意愿运行:
convert photo.jpg -colorspace gray \( +clone -blur 0x10 \) +swap -compose divide -composite -linear-stretch 5%x0% sketch.jpg
但是我在Rails项目中让最终图像看起来有些困难。我正在使用RMagick,我试图尽可能地遵循转换文档,但这不太对。
我的流程代码(在CarrierWave::Uploader::Base
类中)如下:
process :do_stuff
def do_stuff
manipulate! do |img|
img.colorspace = Magick::GRAYColorspace
blur = img.clone.blur_image(0,10)
blurred = Magick::ImageList.new
blurred << blur
blurred << img
sketch = Magick::Image.new(300,20)
img = sketch.composite(blurred,Magick::CenterGravity,Magick::DivideCompositeOp)
img = img.linear_stretch('05%','00%')
end
end
我想知道是否有人聪明可以看看这段代码,看它是否已正确转换为Ruby?
此外,它似乎微不足道(但我无法解决),如何让sketch
初始值设定项使用原始图像的大小?
任何帮助非常感谢。感谢。
答案 0 :(得分:1)
讨厌回答我自己的问题,但我似乎已经解决了。
看起来我试图过于聪明,但在阅读了几次文档后,我认为我对+swap
和composite
方法的交互方式感到困惑。
据我所知,+swap
确保灰度图像不会在灰度图像上合成,而是灰度图像会在模糊图像的顶部合成。
点击后,脚本看起来会简单得多:
process :do_stuff
def do_stuff
manipulate! do |img|
img.colorspace = Magick::GRAYColorspace
blur = img.clone.blur_image(0,10)
img = blur.composite(img,Magick::CenterGravity,Magick::DivideCompositeOp)
img = img.linear_stretch('5%','0%')
end
end
这似乎与我原来的ImageMagick脚本产生相同的结果。