如何将半色调抖动的ImageMagick命令实现到ruby脚本中?

时间:2017-05-13 12:23:24

标签: ruby image imagemagick rmagick

我正在尝试创建一个用于创建半色调抖动的脚本。脚本应该采用rgb图像并将其转换为所有CMYK通道的四个png文件,每个通道都是具有相应阈值模式的位图,如下图所示:

halftone

到目前为止,我制作了一个脚本,用于将图像转换为cmyk,将其调整为所需大小并按通道分割。我还发现了使用ImageMagick创建这个很好的资源 - http://www.imagemagick.org/Usage/quantize/#halftone_offset。 它接近它正是我所需要的,但我不知道如何实现这个:

convert colorwheel.png  -set option:distort:viewport '%wx%h+0+0' \
    -colorspace CMYK -separate null: \
    \( -size 2x2 xc: \( +clone -negate \) \
          +append \( +clone -negate \) -append \) \
    -virtual-pixel tile -filter gaussian \
    \( +clone -distort SRT 60 \) +swap \
    \( +clone -distort SRT 30 \) +swap \
    \( +clone -distort SRT 45 \) +swap \
    \( +clone -distort SRT 0 \)  +swap +delete \
    -compose Overlay -layers composite \
    -set colorspace CMYK -combine -colorspace RGB \
    offset_colorwheel.png

到目前为止我写的内容:

require 'rmagick'
include Magick

width = 1181 
height = 826

puts "loading"
img = Image.read("123.jpg").first()#.resize_to_fit!(width, height)
puts "converting to cmyk"
img.colorspace = Magick::CMYKColorspace
puts "resizing"
img = img.resize_to_fill(width,height)

puts "channel separation"
a = img.separate(AllChannels)
channels = ["c", "m", "y", "k"]
a.each_with_index do |channel, index|
  puts channels[index]
  result.write("#{channels[index]}.jpg")
  channel.ordered_dither('h4x4a').write("#{channels[index]}.jpg")
end

我很感激有关如何翻译给定ImageMagick命令的任何建议

0 个答案:

没有答案