ファイルサイズが調整されたダミー画像を作成する方法

単純にダミー画像が必要であれば、様々なWebサービスが公開されているのでそれらを利用するのが簡単です。国内のサービスであれば、 placehold.jp が有名ですね。国内サーバーで運営されているので、レスポンスが良く快適です。

  • Placehold.jp|ダミー画像生成 モック用画像作成
    • http://placehold.jp/

例えば、以下のようにするとダミー画像を取得できます。

<img src="http://placehold.jp/30/8aafff/ededed/400x150.png?text=hostingstock.net" alt="" />

類似サービスが多数あります。

  • Placehold.it - Quick and simple image placeholders
    • http://www.placehold.it/
  • Dynamic Dummy Image Generator - DummyImage.com
    • http://dummyimage.com/

ダミー画像ではなく、CC (Creative Commons) の画像を取得できるサービスもあります。

  • lorempixel - placeholder images for every case
    • http://lorempixel.com/

例えば、以下のURLにアクセスすると猫の画像を取得できます。

http://lorempixel.com/400/400/cats/hostingstocknet/

話がそれました。

これらのサービスは縦横のサイズを設定できるものの、(当たり前ですが) ファイルサイズを調整できません。

例えば100KiBの画像が欲しいなと思っても、なかなか難しいものです。

単にファイル(バイナリ)だけなら

例えばMacやLinuxなら以下のコマンドで1MiBのダミーファイルを作成できます。

$ dd if=/dev/urandom of=dummy.bin count=1024 bs=1024

や

$ dd if=/dev/urandom of=dummy.bin count=1 bs=1048576

1 MiB = 1024×1024 = 1048576 バイト

Windowsであれば fsutil.exe で同様のことができます。

C:\>fsutil file createnew dummy.bin 1048576

fsutilは管理者権限で実行する必要があります。

画像ファイルのファイルサイズを調整する

Macでの手順ですが、Linuxでも変わらないでしょう。必要なツールはImageMagickとExifToolです。ツールのインストール方法については省きます。Homebrew等で導入してください。Windowsについても、手順は異なりますが同様のツールを利用できます。

ここでは 1MiB のPNGファイル (640×640) を作成します。

1. 基本となるダミー画像の作成

ファイルサイズを調整したいだけなら、既存の画像ファイルを利用することもできます。

$ convert -size 640x640 xc:#FF6600 dummy.png

#FF6600色、640x640のPNGファイル (337バイト) が作成されます。

2. 容量を増やすためのダミーコメントを作成

画像ファイルにはメタデータと呼ばれる画像以外の情報 (GPS情報など) を付与することができます。メタデータにはコメント情報があり、そこにテキストデータ (ダミーコメント) を挿入することで、最終的なファイルサイズを調整します。

ダミーコメントは単純なテキストデータなので、どのようなツールで生成しても大丈夫です。ここでは、以下のようにしてランダムな文字列からなるテキストファイルを生成します。

$ cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 1048218 | head -n 1 > dummy.txt

1文字=1バイトなので、1,048,576 - 337 = 1,048,239で良さそうですが、最終的に21バイト分が余計に付与されるので、それらを引きます。

コメントの格納領域に20バイト利用されます。らさに、最後に改行 (1バイト) が入るため、1,048,239 - 21 = 1,048,218とする。

これで、1,048,219バイト のテキストファイルが作成されました。

3. 画像ファイルにコメントを挿入

ExifToolを利用します。

$ exiftool dummy.png -comment\<=dummy.txt

337バイト (PNG) + 1,048,219バイト (TXT) + 20バイト(格納領域) =  1,048,576バイト

これで1MiB (1,048,576バイト) の画像ファイルが作成されます。

BLOG

UPDATE