module ImageProcessing::MiniMagick::Processor::Utils

Public Instance Methods

apply_define(magick, options) click to toggle source

Applies settings from the provided (nested) hash.

# File lib/image_processing/mini_magick.rb, line 226
def apply_define(magick, options)
  options.each do |namespace, settings|
    namespace = namespace.to_s.tr("_", "-")

    settings.each do |key, value|
      key = key.to_s.tr("_", "-")

      magick.define "#{namespace}:#{key}=#{value}"
    end
  end

  magick
end
apply_options(magick, define: {}, **options) click to toggle source

Applies options from the provided hash.

# File lib/image_processing/mini_magick.rb, line 213
def apply_options(magick, define: {}, **options)
  options.each do |option, value|
    case value
    when true, nil then magick.send(option)
    when false     then magick.send(option).+
    else                magick.send(option, *value)
    end
  end

  apply_define(magick, define)
end
disallow_split_layers!(destination_path) click to toggle source

When a multi-layer format is being converted into a single-layer format, ImageMagick will create multiple images, one for each layer. We want to warn the user that this is probably not what they wanted.

# File lib/image_processing/mini_magick.rb, line 203
def disallow_split_layers!(destination_path)
  layers = Dir[destination_path.sub(/(\.\w+)?$/, '-*\0')]

  if layers.any?
    layers.each { |path| File.delete(path) }
    raise Error, "Source format is multi-layer, but destination format is single-layer. If you care only about the first layer, add `.loader(page: 0)` to your pipeline. If you want to process each layer, see https://github.com/janko/image_processing/wiki/Splitting-a-PDF-into-multiple-images or use `.saver(allow_splitting: true)`."
  end
end