class Imagecache::Conversions::Round

Public Instance Methods

process(file, metadata, conversion) click to toggle source
# File lib/imagecache/conversions/round.rb, line 9
def process(file, metadata, conversion)
  shortest = [metadata.width, metadata.height].min
  radius = (conversion.radius / 100.to_f) * shortest
  command = command(file.path, radius)
  `#{command}`
  data = File.open("#{file.path}.png").read
  File.unlink("#{file.path}.png")
  File.unlink(file.path)
  data
end

Private Instance Methods

command(filepath, radius) click to toggle source
# File lib/imagecache/conversions/round.rb, line 22
def command(filepath, radius)
  arguments = []
  arguments << '\( +clone  -alpha extract'
  arguments << "-draw 'fill black polygon 0,0 0,#{radius} #{radius},0 fill white circle #{radius},#{radius} #{radius},0'"
  arguments << '\( +clone -flip \) -compose Multiply -composite'
  arguments << '\( +clone -flop \) -compose Multiply -composite'
  arguments << '\) -alpha off -compose CopyOpacity -composite'
  "convert #{filepath} #{arguments.join(' ')} #{filepath}.png"
end