Class: SafeImage::OperationBackends::ImageMagick
- Defined in:
- lib/safe_image/operation_backends/image_magick.rb
Overview
ImageMagick operation orchestration. Inputs/outputs still pass the shared path safety checks before the lower backend builds argv arrays with coder: prefixes and the restrictive policy.xml.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #convert(input:, output:, format:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) ⇒ Object
- #convert_favicon_to_png(input:, output:, optimize:, max_pixels: nil) ⇒ Object
- #crop(input:, output:, width:, height:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) ⇒ Object
- #downsize(input:, output:, dimensions:, optimize:, max_pixels:, quality: nil, chroma_subsampling: nil) ⇒ Object
- #fix_orientation(input:, output:, max_pixels:, quality: nil) ⇒ Object
- #letter_avatar(output:, size:, background_rgb:, letter:, pointsize:, font:) ⇒ Object
- #resize(input:, output:, width:, height:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) ⇒ Object
Methods inherited from Base
Constructor Details
This class inherits a constructor from SafeImage::OperationBackends::Base
Instance Method Details
#convert(input:, output:, format:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 61 def convert(input:, output:, format:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) input, output = input_output!(input, output) probe = operation_probe(input, max_pixels: resolved_max_pixels(max_pixels)) normalized_format = Formats.normalize(format) info = ImageMagickBackend.convert(input: probe.input, output: output, format: format, quality: quality) optimize_output(output, normalized_format == "jpg" ? quality : nil) if optimize result_from_info(probe.input, output, info, :imagemagick, tier: :convert) end |
#convert_favicon_to_png(input:, output:, optimize:, max_pixels: nil) ⇒ Object
77 78 79 80 81 82 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 77 def convert_favicon_to_png(input:, output:, optimize:, max_pixels: nil) input, output = input_output!(input, output) info = ImageMagickBackend.convert_ico_to_png(input: Pathname.new(input)..to_s, output: output) optimize_output(output, nil) if optimize result_from_info(input, output, info, :imagemagick, tier: :convert_favicon) end |
#crop(input:, output:, width:, height:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 28 def crop(input:, output:, width:, height:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) input, output = input_output!(input, output) probe = operation_probe(input, max_pixels: resolved_max_pixels(max_pixels)) output = safe_output!(output) info = ImageMagickBackend.resize_like( input: probe.input, output: output, width: width, height: height, format: Formats.extension(output), quality: quality, crop: :north ) optimize_output(output, quality) if optimize result_from_info(probe.input, output, info, :imagemagick, tier: :crop) end |
#downsize(input:, output:, dimensions:, optimize:, max_pixels:, quality: nil, chroma_subsampling: nil) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 46 def downsize(input:, output:, dimensions:, optimize:, max_pixels:, quality: nil, chroma_subsampling: nil) input, output = input_output!(input, output) probe = operation_probe(input, max_pixels: resolved_max_pixels(max_pixels)) output = safe_output!(output) info = ImageMagickBackend.downsize( input: probe.input, output: output, dimensions: dimensions, format: Formats.extension(output) ) optimize_output(output, nil) if optimize result_from_info(probe.input, output, info, :imagemagick, tier: :downsize) end |
#fix_orientation(input:, output:, max_pixels:, quality: nil) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 70 def fix_orientation(input:, output:, max_pixels:, quality: nil) input, output = input_output!(input, output) probe = operation_probe(input, max_pixels: resolved_max_pixels(max_pixels)) info = ImageMagickBackend.fix_orientation(input: probe.input, output: output) result_from_info(probe.input, output, info, :imagemagick, tier: :fix_orientation) end |
#letter_avatar(output:, size:, background_rgb:, letter:, pointsize:, font:) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 84 def letter_avatar(output:, size:, background_rgb:, letter:, pointsize:, font:) output = safe_output!(output) request = { output: output, size: size, background_rgb: background_rgb, letter: letter, pointsize: pointsize, font: font } result_from_info( "generated", output, ImageMagickBackend.letter_avatar(**request), :imagemagick, tier: :letter_avatar ) end |
#resize(input:, output:, width:, height:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/safe_image/operation_backends/image_magick.rb', line 11 def resize(input:, output:, width:, height:, quality:, optimize:, max_pixels:, chroma_subsampling: nil) input, output = input_output!(input, output) probe = operation_probe(input, max_pixels: resolved_max_pixels(max_pixels)) output = safe_output!(output) info = ImageMagickBackend.thumbnail( input: probe.input, output: output, width: width, height: height, format: Formats.extension(output), quality: quality ) optimize_output(output, quality) if optimize result_from_info(probe.input, output, info, :imagemagick, tier: :resize) end |