class Libis::Format::Converter::ImageAssembler

noinspection RubyTooManyInstanceVariablesInspection,DuplicatedCode

Public Class Methods

category() click to toggle source
# File lib/libis/format/converter/image_assembler.rb, line 33
def self.category
  :assembler
end
input_types() click to toggle source
# File lib/libis/format/converter/image_assembler.rb, line 24
def self.input_types
  [:TIFF, :JPG, :PNG, :BMP, :GIF, :PDF, :JP2]
end
output_types(format = nil) click to toggle source
# File lib/libis/format/converter/image_assembler.rb, line 28
def self.output_types(format = nil)
  return [] unless input_types.include?(format) if format
  [:PDF, :TIFF, :GIF, :PBM, :PGM, :PPM]
end

Public Instance Methods

convert(source, target, format, opts = {}) click to toggle source
Calls superclass method Libis::Format::Converter::Base#convert
# File lib/libis/format/converter/image_assembler.rb, line 45
def convert(source, target, format, opts = {})
  super

  FileUtils.mkpath(File.dirname(target))

  if source.is_a? Array
    assemble(source, target, format)
  elsif File.directory?(source)
    source_list = Dir[File.join(source, '**', '*')].reject {|p| File.directory? p}
    assemble(source_list, target, format)
  else
    image = MiniMagick::Image.open(source) {|b| b.quiet}
    if image.pages.size > 1
      assemble(image.pages.map {|page| page.path}, target, format)
    else
      assemble([source], target, format)
    end
  end

  target

end
image_assemble(_) click to toggle source
# File lib/libis/format/converter/image_assembler.rb, line 37
def image_assemble(_)
  #force usage of this converter
end
quiet(v) click to toggle source
# File lib/libis/format/converter/image_assembler.rb, line 41
def quiet(v)
  @quiet = !!v
end

Private Instance Methods

assemble(sources, target, format) click to toggle source
# File lib/libis/format/converter/image_assembler.rb, line 70
def assemble(sources, target, format)
  MiniMagick::Tool::Convert.new do |b|
    sources.each {|source| b << source}
    convert.format(format)
    b << target
  end
end