我无法在我的 java 项目中获取 libjpeg-turbo 来实际压缩图像。它可以很好地写入 .jpg - 但结果的最终大小总是例如与相同图像的 24 位 windows .bmp 几乎相同。一个 480x854 的图像会变成一个 1.2 兆字节的 jpeg,代码片段如下。如果我使用灰色采样,它的大小是 800Kb(而且这些图像一开始并不是花哨的图像——主要是中性背景,上面有一些填充的原色光盘,用于我正在开发的游戏)。
这是我到目前为止的代码:
// 对于一些 RGB888 格式的 byte[] src,代表一个维度的图像 //“宽度”和“高度” 尝试 { TJCompressor tjc = 新的 TJCompressor( 源代码, 宽度 0, // "pitch" - 扫描线大小 高度 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 标准的内部结构,我也不想:)!
谢谢!