この記事は3年以上前に書かれた記事で内容が古い可能性があります
シェルスクリプトで、HTML/CSSの出力結果(グラデーション)を、PNG画像に変換してローカルに保存する
シェルスクリプトで、HTML/CSSのグラデーション背景を、PNG画像に変換してローカルに保存する
グラデーションの画像を感覚的ではなく、機械的に作成したい時、HTML/CSSで描きたくなる時があるので備忘メモ
HTML/CSSで作成した画像はPNG形式で保存するところまでShellScriptでコード化する
背景だけでなく、HTMLで出力されるページ全体を画像化できます
グラデーション作り
グラデーションの色は、インスタグラムのカラーコードを拝借
HTMLコードは以下(ファイル名は「html-to-png-test.html」としている)
「linear-gradient」は線状のグラデーション
「30deg」はグラデーションの傾き(30度)
その下は、「色コード」と「何%の時点でその色を持ってくるか」をそれぞれ示している
% cat html-to-png-test.html <!DOCTYPE html> <html> <head> <style> body { background-image: linear-gradient( 30deg, #405de6 0%, #5851db 11%, #833ab4 22%, #c13584 33%, #e1306c 44%, #fd1d1d 55%, #f56040 66%, #f77737 77%, #fcaf45 88%, #ffdc80 100% ); } </style> </head> <body> </body> </html>
ブラウザで開くと綺麗なグラデーションが描き出される
% open html-to-png-test.html
画像変換
「HCTI API」の利用登録
HTMLから画像変換するには、HCTI APIというオンラインツールを利用する
※無料版はAPI利用回数に制限があるので注意!
利用のためにはSign upが必要
「Get started free」をクリック
お好きな方法でSign up
ダッシュボードから「User ID」と「API Key」をメモしておく
Dashboard
「HCTI API」の利用
HTMLファイルと同じ階層に以下の「passwords.sh」と「html-to-png-test.sh」というファイルを作成
「passwords.sh」内の「UserID」と「APIKey’」部分は、先ほどメモした値に変更しておく
% cat passwords.sh #!/bin/zsh # https://htmlcsstoimage.com/dashboard export UserId="User ID" export APIKey="API Key"
% cat html-to-png-test.sh #!/bin/zsh # set html code file path html_codes=`cat ./html-to-png-test.html` # set css code file path css_codes=`` # include passwords . ./passwords.sh # get image url path png_url=`curl -X POST https://hcti.io/v1/image \ -u $UserId:$APIKey \ -d html="$html_codes" \ -d css="$css_codes" \ | jq ".url" \ | sed "s/\"//g"` # download image from url path to local curl $png_url > ./html-to-png-test.png
※jqコマンドをインストールしていなければインストールする
(以下はMacの場合のコマンド)
$ brew install jq
現時点でファイル階層構造はこのようになっている
% tree . ├── html-to-png-test.html ├── html-to-png-test.sh └── passwords.sh
コードを実行する
% sh html-to-png-test.sh
すると「html-to-png-test.png」というファイルが同じ階層にできている
% tree . ├── html-to-png-test.html ├── html-to-png-test.png ├── html-to-png-test.sh └── passwords.sh
開いて意図した画像が作成されているか確認する
% open html-to-png-test.png
以上