使用位图和JPEG压缩将预览文件大小减小,同时保持图像质量。
以下是一个示例代码,演示如何生成压缩位图及压缩JPEG文件:
Bitmap originalBitmap = BitmapFactory.decodeFile(originalFilePath);
int originalWidth = originalBitmap.getWidth();
int originalHeight = originalBitmap.getHeight();
// Generate preview bitmap with reduced size
int previewWidth = originalWidth / 4;
int previewHeight = originalHeight / 4;
Bitmap previewBitmap = Bitmap.createScaledBitmap(originalBitmap, previewWidth, previewHeight, false);
// Compress preview bitmap to JPEG file
File previewFile = new File(previewFilePath);
try {
FileOutputStream out = new FileOutputStream(previewFile);
previewBitmap.compress(Bitmap.CompressFormat.JPEG, 85, out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
// Compress original bitmap to JPEG file for storage
File originalFile = new File(originalFilePath);
try {
FileOutputStream out = new FileOutputStream(originalFile);
originalBitmap.compress(Bitmap.CompressFormat.JPEG, 95, out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
在上面的代码中,原始位图被加载,并在生成预览位图之前其大小被获取。预览位图的大小被设置为原始大小的四分之一,并使用Bitmap.createScaledBitmap
方法生成。预览位图大小的优化可以根据实际应用进行调整。
生成的预览位图被压缩到JPEG文件中,图像质量设置为85。原始位图也被压缩到JPEG文件中,图像质量设置为95。这些压缩质量可以根据实际需求进行调整。