module ImageProcessing::MiniMagick::Processor::Utils
def apply_define(magick, options)
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
def apply_options(magick, define: {}, **options)
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
def disallow_split_layers!(destination_path)
format, ImageMagick will create multiple images, one for each layer.
When a multi-layer format is being converted into a single-layer
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