#coding=utf-8 module Trustie module Utils class Image def initialize(file, bak=false) @file = file @bak = bak end def bitmap?(data) data[0,2]==77.chr + 66.chr end def gif?(data) data[0,4]==71.chr + 73.chr + 70.chr + 56.chr end def jpeg?(data) data[0,3]== 0xff.chr + 0xd8.chr + 0xff.chr end def png?(data) data[0,2]==0x89.chr + 80.chr end def image? data = '' if @file.respond_to?(:read) data = @file.read(9) @file.rewind end return false if data.size < 9 bitmap?(data) || gif?(data) || jpeg?(data) || png?(data) end def compress(size=300) backup if @bak begin f = Magick::ImageList.new(@file) if f.format != 'GIF' width = size if f[0].columns > width proportion = (width/f[0].columns.to_f) height = (f[0].rows*proportion) f.resize_to_fill!(width,height.to_i) f.write(@file) end end rescue Exception => e Rails.logger.error "[Error] compress : ===> #{e}" end end def backup FileUtils.cp @file, "#{@file}.bak" end end end end