我无法在我的 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 标准的内部结构,我也不想:)!
谢谢!