Class: ImageProcessing::MiniMagick::Processor
- Defined in:
- lib/image_processing/mini_magick.rb
Defined Under Namespace
Modules: Utils
Constant Summary collapse
- SHARPEN_PARAMETERS =
Default sharpening parameters used on generated thumbnails.
{ radius: 0, sigma: 1 }
Class Method Summary collapse
-
.load_image(path_or_magick, loader: nil, page: nil, geometry: nil, auto_orient: true, **options) ⇒ Object
Initializes the image on disk into a MiniMagick::Tool object.
-
.save_image(magick, destination_path, allow_splitting: false, **options) ⇒ Object
Calls the built ImageMagick command to perform processing and save the result to disk.
Instance Method Summary collapse
-
#append(*args) ⇒ Object
Appends a raw ImageMagick command-line argument to the command.
-
#composite(overlay = :none, mask: nil, mode: nil, gravity: nil, offset: nil, args: nil, **options) {|magick| ... } ⇒ Object
Overlays the specified image over the current one.
-
#crop(*args) ⇒ Object
Crops the image with the specified crop points.
-
#define(options) ⇒ Object
Defines settings from the provided hash.
-
#limits(options) ⇒ Object
Specifies resource limits from the provided hash.
-
#resize_and_pad(width, height, background: :transparent, gravity: "Center", **options) ⇒ Object
Resizes the image to fit within the specified dimensions and fills the remaining area with the specified background color.
-
#resize_to_cover(width, height, **options) ⇒ Object
Resizes the image to cover the specified dimensions, without cropping the excess.
-
#resize_to_fill(width, height, gravity: "Center", **options) ⇒ Object
Resizes the image to fill the specified dimensions, applying any necessary cropping.
-
#resize_to_fit(width, height, **options) ⇒ Object
Resizes the image to fit within the specified dimensions.
-
#resize_to_limit(width, height, **options) ⇒ Object
Resizes the image to not be larger than the specified dimensions.
-
#rotate(degrees, background: nil) ⇒ Object
Rotates the image by an arbitrary angle.
Methods inherited from Processor
accumulator, apply_operation, #apply_operation, call, #custom, #initialize, supports_resize_on_load?
Constructor Details
This class inherits a constructor from ImageProcessing::Processor
Class Method Details
.load_image(path_or_magick, loader: nil, page: nil, geometry: nil, auto_orient: true, **options) ⇒ Object
Initializes the image on disk into a MiniMagick::Tool object. Accepts additional options related to loading the image (e.g. geometry). Additionally auto-orients the image to be upright.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/image_processing/mini_magick.rb', line 28 def self.load_image(path_or_magick, loader: nil, page: nil, geometry: nil, auto_orient: true, **) if path_or_magick.is_a?(::MiniMagick::Tool) magick = path_or_magick else source_path = path_or_magick magick = ::MiniMagick::Tool::Convert.new Utils.(magick, **) input = source_path input = "#{loader}:#{input}" if loader input += "[#{page}]" if page input += "[#{geometry}]" if geometry magick << input end magick.auto_orient if auto_orient magick end |
.save_image(magick, destination_path, allow_splitting: false, **options) ⇒ Object
Calls the built ImageMagick command to perform processing and save the result to disk. Accepts additional options related to saving the image (e.g. quality).
52 53 54 55 56 57 58 59 |
# File 'lib/image_processing/mini_magick.rb', line 52 def self.save_image(magick, destination_path, allow_splitting: false, **) Utils.(magick, **) magick << destination_path magick.call Utils.disallow_split_layers!(destination_path) unless allow_splitting end |
Instance Method Details
#append(*args) ⇒ Object
Appends a raw ImageMagick command-line argument to the command.
159 160 161 162 163 164 165 |
# File 'lib/image_processing/mini_magick.rb', line 159 def append(*args) if args.empty? magick.append else magick.merge! args end end |
#composite(overlay = :none, mask: nil, mode: nil, gravity: nil, offset: nil, args: nil, **options) {|magick| ... } ⇒ Object
Overlays the specified image over the current one. Supports specifying an additional mask, composite mode, direction or offset of the overlay image.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/image_processing/mini_magick.rb', line 115 def composite( = :none, mask: nil, mode: nil, gravity: nil, offset: nil, args: nil, **, &block) return magick.composite if == :none if .key?(:compose) warn "[IMAGE_PROCESSING] The :compose parameter in #composite has been renamed to :mode, the :compose alias will be removed in ImageProcessing 2." mode = [:compose] end if .key?(:geometry) warn "[IMAGE_PROCESSING] The :geometry parameter in #composite has been deprecated and will be removed in ImageProcessing 2. Use :offset instead, e.g. `geometry: \"+10+15\"` should be replaced with `offset: [10, 15]`." geometry = [:geometry] end geometry = "%+d%+d" % offset if offset = convert_to_path(, "overlay") mask_path = convert_to_path(mask, "mask") if mask magick << magick << mask_path if mask_path magick.compose(mode) if mode define(compose: { args: args }) if args magick.gravity(gravity) if gravity magick.geometry(geometry) if geometry yield magick if block_given? magick.composite end |
#crop(*args) ⇒ Object
Crops the image with the specified crop points.
96 97 98 99 100 101 102 |
# File 'lib/image_processing/mini_magick.rb', line 96 def crop(*args) case args.count when 1 then magick.crop(*args) when 4 then magick.crop("#{args[2]}x#{args[3]}+#{args[0]}+#{args[1]}") else fail ArgumentError, "wrong number of arguments (expected 1 or 4, got #{args.count})" end end |
#define(options) ⇒ Object
Defines settings from the provided hash.
147 148 149 150 |
# File 'lib/image_processing/mini_magick.rb', line 147 def define() return magick.define() if .is_a?(String) Utils.apply_define(magick, ) end |
#limits(options) ⇒ Object
Specifies resource limits from the provided hash.
153 154 155 156 |
# File 'lib/image_processing/mini_magick.rb', line 153 def limits() .each { |type, value| magick.args.unshift("-limit", type.to_s, value.to_s) } magick end |
#resize_and_pad(width, height, background: :transparent, gravity: "Center", **options) ⇒ Object
Resizes the image to fit within the specified dimensions and fills the remaining area with the specified background color.
82 83 84 85 86 87 |
# File 'lib/image_processing/mini_magick.rb', line 82 def resize_and_pad(width, height, background: :transparent, gravity: "Center", **) thumbnail("#{width}x#{height}", **) magick.background color(background) magick.gravity gravity magick.extent "#{width}x#{height}" end |
#resize_to_cover(width, height, **options) ⇒ Object
Resizes the image to cover the specified dimensions, without cropping the excess.
91 92 93 |
# File 'lib/image_processing/mini_magick.rb', line 91 def resize_to_cover(width, height, **) thumbnail("#{width}x#{height}^", **) end |
#resize_to_fill(width, height, gravity: "Center", **options) ⇒ Object
Resizes the image to fill the specified dimensions, applying any necessary cropping.
73 74 75 76 77 78 |
# File 'lib/image_processing/mini_magick.rb', line 73 def resize_to_fill(width, height, gravity: "Center", **) thumbnail("#{width}x#{height}^", **) magick.gravity gravity magick.background color(:transparent) magick.extent "#{width}x#{height}" end |
#resize_to_fit(width, height, **options) ⇒ Object
Resizes the image to fit within the specified dimensions.
67 68 69 |
# File 'lib/image_processing/mini_magick.rb', line 67 def resize_to_fit(width, height, **) thumbnail("#{width}x#{height}", **) end |
#resize_to_limit(width, height, **options) ⇒ Object
Resizes the image to not be larger than the specified dimensions.
62 63 64 |
# File 'lib/image_processing/mini_magick.rb', line 62 def resize_to_limit(width, height, **) thumbnail("#{width}x#{height}>", **) end |
#rotate(degrees, background: nil) ⇒ Object
Rotates the image by an arbitrary angle. For angles that are not multiple of 90 degrees an optional background color can be specified to fill in the gaps.
107 108 109 110 |
# File 'lib/image_processing/mini_magick.rb', line 107 def rotate(degrees, background: nil) magick.background color(background) if background magick.rotate(degrees) end |