You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pgfqe6ch8/lib/trustie/utils/image.rb

61 lines
1.3 KiB

#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]==66.chr + 77.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