Java プロジェクトで実際に画像を圧縮するために libjpeg-turbo を取得するのに問題があります。これは .jpg をうまく書き込みますが、結果の最終的なサイズは常に、たとえば同じ画像の 24 ビット ウィンドウの .bmp とほぼ同じになります。480x854 の画像は、以下のコード スニペットを使用して 1.2 メガバイトの jpeg に変換されます。GRAY サンプリングを使用すると、800Kb になります (そして、これらはそもそも派手な画像ではありません。ほとんどの場合、私が取り組んでいるゲームの原色ディスクが塗りつぶされたニュートラルな背景です)。
これまでに得たコードは次のとおりです。
// RGB888 形式の byte[] src に対して、寸法の画像を表す
// 「幅」と「高さ」
試す
{
TJCompressor tjc = new TJCompressor(
src、
幅
0, // "ピッチ" - スキャンラインのサイズ
身長
TJ.PF_RGB // フォーマット
);
tjc.setJPEGQuality(75);
tjc.setSubsamp(TJ.SAMP_420);
バイト[] jpg_data = tjc.compress(0);
new java.io.FileOutputStream(new java.io.File("/tmp/dump.jpg")).write(jpg_data, 0, jpg_data.length);
}
キャッチ(例外e)
{
e.printStackTrace(System.err);
}
私は特に、このプロジェクトのサンプル Java 使用ドキュメントを見つけるのに苦労しています。ほとんどの場合、C のバックグラウンド/使用法を前提としています。私は圧縮に渡すフラグを理解していません (また、jpeg 標準の内部構造を本当に知っているわけでもなく、知りたいわけでもありません :)!
ありがとう!