[ruby]irbで画像URLからbase64エンコード画像を作成する
画像をbase64エンコード画像に変換したかったのでrubyで試してみました。
画像URLは↓です。
https://images.ctfassets.net/z2fxe3vedtaj/2lVZHkdhhu2ZHbPyFO7ZYs/998f53f577d3ce4da689ae1accf38971/twitter.png
今回は上記画像をbase64のpng形式に変換してみます。
irbを起動
irb -r base64 -r open-uri
# 以下を入力
'data:image/png;base64,' + Base64.strict_encode64(open('https://images.ctfassets.net/z2fxe3vedtaj/2lVZHkdhhu2ZHbPyFO7ZYs/998f53f577d3ce4da689ae1accf38971/twitter.png').read)
# 結果
=>"data:image/png;base64,iVBORw0KGgoAAAAN!~~省略~~5ErkJggg=="
ファイル読み込みの場合は以下
irb -r base64
# 以下を入力
'data:image/png;base64,' + Base64.strict_encode64(File.new('path/to/img').read)
# 結果
=>"data:image/png;base64,iVBORw0KGgoAAAAN!~~省略~~5ErkJggg=="
コマンドを実行するとダダーっとエンコード文字列が表示されるので、それをブラウザに貼り付けると画像が表示されます。
なお、Base64.encode64メソッドだと改行文字列(\n)が追加されてしまってうまく動かずハマるので注意。
Base64.strict_encode64を使うと正しくdecodeできます。