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 標準の内部構造を本当に知っているわけでもなく、知りたいわけでもありません :)!
ありがとう!