class Imagecache::Converter

Public Instance Methods

_convert(assetpath, conversions) click to toggle source
# File lib/imagecache/converter.rb, line 18
def _convert(assetpath, conversions)
  source = (conversions.length > 1) ? url_writer.write(conversions[0, (conversions.size - 1)], assetpath) : assetpath
  destination = url_writer.write(conversions, assetpath)
  if filesystem.exists?(destination)
    data = filesystem.get(destination)
    return data
  elsif filesystem.exists?(source)
    data = filesystem.get(source)
    file = file(data)
    metadata = identify.identify(file)
    newdata = process(file, metadata, conversion)
    newurl = url_writer.write(conversions, assetpath)
    filesystem.set(newurl, converted.data)
    return newdata
  end
end
convert(data, conversions) click to toggle source
# File lib/imagecache/converter.rb, line 7
def convert(data, conversions)
  (1..conversions.length).each do
    data = _convert(assetpath, conversions)
  end
  file = file(data)
  metadata = identify.identify(file)
  File.unlink(file.path)
  OpenStruct.new(data: data, content_type: metadata.content_type)
end

Private Instance Methods

file(data) click to toggle source
# File lib/imagecache/converter.rb, line 54
def file(data)
  filename = SecureRandom.hex(32).to_s.upcase[0,8]
  filepath = "#{Rails.root}/tmp/#{filename}"
  file = File.open(filepath, 'wb')
  file.write(data)
  file.close if file && !file.closed?
  file
end
identify() click to toggle source
# File lib/imagecache/converter.rb, line 63
def identify
  @identify ||= Imagecache::Identify.new
end
process(file, metadata, conversion) click to toggle source
# File lib/imagecache/converter.rb, line 41
def process(file, metadata, conversion)
  if conversion.action == 'resize'
    converter = Imagecache::Conversions::Resize.new
  elsif conversion.action == 'crop'
    converter = Imagecache::Conversions::Crop.new
  elsif conversion.action == 'round'
    converter = Imagecache::Conversions::Round.new
  elsif conversion.action == 'fit'
    converter = Imagecache::Conversions::Fit.new
  end
  converter.process(file, metadata, conversion)
end
processor() click to toggle source
# File lib/imagecache/converter.rb, line 37
def processor
  @processor ||= Imagecache::Convert.new
end