Rubyで画像ファイルの種別を判定する方法です。
🐹 判定ロジック
- JPEG => ファイルが
ffd8
で始まり、ffd9
で終わる
- GIF => ファイルが
GIF
で始まり、3b
で終わる
- PNG => ファイルが
89504e470d0a1a0a
で始まり、0000000049454e44ae426082
で終わる
😸 ソースコード
def image_type(file_path) File.open(file_path, 'rb') do |f| begin header = f.read(8) f.seek(-12, IO::SEEK_END) footer = f.read(12) rescue return nil end
if header[0, 2].unpack('H*') == %w(ffd8) && footer[-2, 2].unpack('H*') == %w(ffd9) return 'jpg' elsif header[0, 3].unpack('A*') == %w(GIF) && footer[-1, 1].unpack('H*') == %w(3b) return 'gif' elsif header[0, 8].unpack('H*') == %w(89504e470d0a1a0a) && footer[-12,12].unpack('H*') == %w(0000000049454e44ae426082) return 'png' end end nil end
|
🚜 参考リンク
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!