スリ飯屋MaLankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

Rubyで画像ファイルの形式(gif, png, jpg)を判定する


Rubyで画像ファイルの形式(gif, png, jpg)を判定する


こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、

画像ファイルの形式をバリデーションする必要があったので、

備忘録として残しておきます。




Rubyで画像ファイルの形式(gif, png, jpg)を判定する




今回の例では、


  • Base64でエンコードされた、画像のバイナリ文字列


が渡ってくることを想定します。


ファイル名の拡張子で判定はしません。


画像が持つバイナリデータから判定します。




【結論】


def image_type!(encoded_str)
  raise if encoded_str.nil?

  decoded_str = Base64.decode64(encoded_str)
  case decoded_str
  when /GIF8[79]a/n
    return 'gif'
  when /\x89PNG/n
    return 'png'
  when /\xFF\xD8/n
    return 'jpg'
  else
    raise
  end
end


〜処理の流れ〜


1.Base64でエンコードされた、画像のバイナリ文字列をデコードする

2.デコードしたバイナリ文字列に対し、正規表現を当てて、gif, png, jpgのいずれかであることを検証

3.マッチした拡張子を文字列で返す

※gif, png, jpg以外の画像形式の場合はエラー




以上、


  • Rubyで画像ファイルの形式(gif, png, jpg)を判定する


でした。




初めての方はこちらのオススメ記事もどうぞ


note.com


www.malanka.tech


www.malanka.tech


www.malanka.tech


www.malanka.tech




フリーランスエンジニアになりたい方はこちら


フォスターフリーランスという、

フリーランス専門エージェントを使うのがおすすめです。



自分もフォスターフリーランスを使って、

フリーランスエンジニアとしてのキャリアをスタートさせました。


フォスターフリーランスを使うと、

自分の代わりに、

プロの営業さんが案件を探してくれます。


最初の内は、

自分で営業なんてとても出来ないので、

非常にありがたかったです。


しかも無料で利用できる。


参考までに、

自分がお世話になっているエージェントを2つご紹介しておきます。


話を聞くだけでもOKなので、

ぜひ利用してみてください。


フォスターフリーランス【案件保有数5000件以上。業界25年の超老舗】

無料でフォスターフリーランスに登録


下記の記事で、

フォスターフリーランスの特徴について解説しています。


www.malanka.tech




Rubyを学習するならこちら


Udemy という動画教材です。


はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




なんとUdemy は、

60%OFFのセールをやっている時もあります。


こまめにチェックして、

スキルアップを図りましょう★




また、

Ruby関連の過去記事は下記にありますので、

合わせてチェックしてみてください◎


技術関連-Ruby カテゴリーの記事一覧 - スリ飯屋MaLankaのフリーエンジニアな日々

www.malanka.tech




フリーランスエンジニアのデメリットはこちら


今回のコロナで、

参画していたプロジェクトが終了し、被害を受けました。


そこで、

コロナ被害を受けて感じている、

フリーランスエンジニアのデメリット【6つ】について、

noteを書きました。


下記に当てはまる人に、参考になると思います。

現在、フリーランスエンジニアとして生きている人

今からフリーランスエンジニアになろうとしている人

フリーランスエンジニアだが、コロナの影響で仕事が途絶えた人


https://note.com/malanka666/n/n081d40a196bfnote.com










あなたもフリーランスになってみませんか?