Module: CarrierWave::ImageSorcery
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/carrierwave-imagesorcery/version.rb,
lib/carrierwave-imagesorcery/image_sorcery.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- VERSION =
"0.0.5"
Instance Method Summary collapse
-
#convert(format) ⇒ Object
Changes the image encoding format to the given format.
- #dimensions ⇒ Object
- #manipulate! ⇒ Object
-
#resize_and_pad(width, height, background = :transparent, gravity = 'Center') ⇒ Object
Resize the image to fit within the specified dimensions while retaining the original aspect ratio.
-
#resize_to_fill(width, height, gravity = 'Center') ⇒ Object
Resize the image to fit within the specified dimensions while retaining the aspect ratio of the original image.
-
#resize_to_fit(width, height) ⇒ Object
Resize the image to fit within the specified dimensions while retaining the original aspect ratio.
-
#resize_to_limit(width, height) ⇒ Object
Resize the image to fit within the specified dimensions while retaining the original aspect ratio.
Instance Method Details
#convert(format) ⇒ Object
Changes the image encoding format to the given format
See www.imagemagick.org/script/command-line-options.php#format
Parameters
- format (#to_s)
-
an abreviation of the format
Examples
image.convert(:png)
43 44 45 46 47 48 49 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 43 def convert(format) manipulate! do |img| img.manipulate!(:format => format.to_s.downcase) img = yield(img) if block_given? img end end |
#dimensions ⇒ Object
148 149 150 151 152 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 148 def dimensions manipulate! do |img| img.dimensions end end |
#manipulate! ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 154 def manipulate! cache_stored_file! if !cached? image = ::ImageSorcery.new current_path image = yield(image) replace_file(image.file) if !image.is_a?(Hash) && image.filename_changed? image rescue RuntimeError, StandardError => e raise CarrierWave::ProcessingError , I18n.translate(:"errors.messages.imagesorcery_processing_error", :e => e) end |
#resize_and_pad(width, height, background = :transparent, gravity = 'Center') ⇒ Object
Resize the image to fit within the specified dimensions while retaining the original aspect ratio. If necessary, will pad the remaining area with the given color, which defaults to transparent (for gif and png, white for jpeg).
See www.imagemagick.org/script/command-line-options.php#gravity for gravity options.
Parameters
- width (Integer)
-
the width to scale the image to
- height (Integer)
-
the height to scale the image to
- background (String, :transparent)
-
the color of the background as a hexcode, like “#ff45de”
- gravity (String)
-
how to position the image
135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 135 def resize_and_pad(width, height, background=:transparent, gravity='Center') manipulate! do |img| opt={} opt[:thumbnail] = "#{width}x#{height}>" background == :transparent ? opt[:background] = "rgba(255, 255, 255, 0.0)" : opt[:background] = background opt[:gravity] = gravity opt[:extent] = "#{width}x#{height}" img.manipulate!(opt) img = yield(img) if block_given? img end end |
#resize_to_fill(width, height, gravity = 'Center') ⇒ Object
Resize the image to fit within the specified dimensions while retaining the aspect ratio of the original image. If necessary, crop the image in the larger dimension.
Parameters
- width (Integer)
-
the width to scale the image to
- height (Integer)
-
the height to scale the image to
- gravity (String)
-
the current gravity suggestion (default: ‘Center’; options: ‘NorthWest’, ‘North’, ‘NorthEast’, ‘West’, ‘Center’, ‘East’, ‘SouthWest’, ‘South’, ‘SouthEast’)
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 99 def resize_to_fill(width, height, gravity = 'Center') manipulate! do |img| cols, rows = img.dimensions[:x].to_i, img.dimensions[:y].to_i opt={} if width != cols || height != rows scale = [width/cols.to_f, height/rows.to_f].max cols = (scale * (cols + 0.5)).round rows = (scale * (rows + 0.5)).round opt[:resize] = "#{cols}x#{rows}" end opt[:gravity] = gravity opt[:background] = "rgba(255,255,255,0.0)" opt[:extent] = "#{width}x#{height}" if cols != width || rows != height img.manipulate!(opt) img = yield(img) if block_given? img end end |
#resize_to_fit(width, height) ⇒ Object
Resize the image to fit within the specified dimensions while retaining the original aspect ratio. The image may be shorter or narrower than specified in the smaller dimension but will not be larger than the specified values.
Parameters
- width (Integer)
-
the width to scale the image to
- height (Integer)
-
the height to scale the image to
80 81 82 83 84 85 86 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 80 def resize_to_fit(width, height) manipulate! do |img| img.manipulate!(:resize => "#{width}x#{height}") img = yield(img) if block_given? img end end |
#resize_to_limit(width, height) ⇒ Object
Resize the image to fit within the specified dimensions while retaining the original aspect ratio. Will only resize the image if it is larger than the specified dimensions. The resulting image may be shorter or narrower than specified in the smaller dimension but will not be larger than the specified values.
Parameters
- width (Integer)
-
the width to scale the image to
- height (Integer)
-
the height to scale the image to
62 63 64 65 66 67 68 |
# File 'lib/carrierwave-imagesorcery/image_sorcery.rb', line 62 def resize_to_limit(width, height) manipulate! do |img| img.manipulate!(:resize => "#{width}x#{height}>") img = yield(img) if block_given? img end end |