Data URL Scheme
課題でウェブページを作れとな?
そんなの簡単っていうwwwwwwMarkdownで書いてHTML吐いてCSSで適当に飾っとけばいいっていうwwwwwwwww
しかし!以下の制約があるのだ!
- HTMLのソースコードはPDFファイルに貼付けなければいけない
- ウェブページは自分以外でも閲覧可能でなければいけない
この2つの制約を守る限り、画像をHTMLで貼るにはどこか別のサーバにアップロードしなければいけない。
<img src="image.jpg">
と書いたってPDFには単一のHTMLしか貼り付けられない。
実はHTMLやCSSにはインラインで画像などのバイナリを書けるData URL Schemeという仕組みがある。
これを使えばbackground-image
も<img>
も単一のHTMLファイルでいけるのだ。
とりあえず、使ってみることにしよう。
まずは、なんでもいいので適当な画像を用意する。
そして、その画像をbase64でエンコードする。
base64でエンコードするときはbase64
コマンドが便利。
ただし、勝手に改行してしまうので、改行しないように-w0
とオプションをつけないといけない。
1 |
base64 -w0 image.jpg > image.base64 |
base64
コマンドは結果を標準出力に吐き出すので、それをリダイレクトしてファイルに保存している。
そして、base64化した画像ファイルをHTMLファイルに書く。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!DOCTYPE html> <html> <head> <style> body { background-image: url(data:image/jpeg;base64,xxxxxxxxxxxxxxxxxxxx); } </style> </head> <body> <img src="data:image/jpeg;base64,xxxxxxxxxxxxxxxx"> </body> </html> |
これで単一のHTMLファイルでもこうやって画像を貼ることができた。
ちなみにこの方法で複数の画像を扱うとソースコードの長さがすごいことになって、これをPDFファイルに貼り付けるとファイルサイズがとんでもないことになるので気をつけようね。