各ピクセルがランダムな色に設定された JPEG ファイルを生成する Magick++ を使用してプログラムを作成しました。うまく機能しますが、私の目的には少し遅いです。
libjpeg-turbo の方が高速であると読みましたが、そのドキュメントを読んでみると、既存の画像ファイルから読み取って圧縮する関数と例しか見つかりません。libjpeg-turbo を使用して、jpeg のピクセル値をプログラムで設定することは可能ですか?
イメージをより迅速に作成する他の方法はありますか? そのうちの 1 つがより高速なアルゴリズムを可能にすることができる場合は、さまざまなファイルの種類を試すことにオープンです。私の最終的な目標は、ランダムに生成された画像を Web ページに表示する CGI プログラムを作成することです。
これは私がMagick ++で使用しているコードです:
Image babel( Geometry(640, 416), Color(MaxRGB, MaxRGB, MaxRGB, 0));
babel.magick("JPEG");
boost::multiprecision::mpz_int color;
for (unsigned x=0;x<798720;x++) {
color = *pointer % 16;
if (color<10) {where += ('0'+color.convert_to<int>());}
else {where += ('7' + color.convert_to<int>());}
if (x%3==2) {babel.pixelColor((x%1920)/3,x/1920,Color(where)); where="#";}
*pointer = *pointer >> 4;
}
babel.write("rando.jpg");
- - アップデート - - -
以下で指摘されているように、Magick++ はこのプログラムの速度低下の原因ではありません。この for ループの他の側面を最適化するためのアドバイスを歓迎します。