Skip to content

Instantly share code, notes, and snippets.

@joffilyfe
Forked from artemave/carrierwave.rb
Created July 14, 2016 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joffilyfe/e370bed907c2392af2855823b2210e71 to your computer and use it in GitHub Desktop.
Save joffilyfe/e370bed907c2392af2855823b2210e71 to your computer and use it in GitHub Desktop.
minimagick carrierwave round image (with white border)
# config/initializers/carrierwave.rb
require 'mini_magick'
module CarrierWave
module MiniMagick
# round _square_ image
def round
manipulate! do |img|
img.format 'png'
width = img[:width]-2
radius = width/2
mask = ::MiniMagick::Image.open img.path
mask.format 'png'
mask.combine_options do |m|
m.alpha 'transparent'
m.background 'none'
m.fill 'white'
m.draw 'roundrectangle 1,1,%s,%s,%s,%s' % [width, width, radius, radius]
end
overlay = ::MiniMagick::Image.open img.path
overlay.format 'png'
overlay.combine_options do |o|
o.alpha 'transparent'
o.background 'none'
o.fill 'none'
o.stroke 'white'
o.strokewidth 2
o.draw 'roundrectangle 1,1,%s,%s,%s,%s' % [width, width, radius, radius]
end
masked = img.composite(mask, 'png') do |i|
i.alpha "set"
i.compose 'DstIn'
end
masked.composite(overlay, 'png') do |i|
i.compose 'Over'
end
end
end
end
end
# somewhere in an uploader
varsion :email do
process :round
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment