Java 将图像高度和宽度降低50%,但磁盘上的图像大小保持不变
我试图通过重新调整图像的长度和宽度来减小图像的大小,但它保持相同的大小(以兆字节为单位),有时甚至更大,尽管它只有原来的一半大Java 将图像高度和宽度降低50%,但磁盘上的图像大小保持不变,java,android,Java,Android,我试图通过重新调整图像的长度和宽度来减小图像的大小,但它保持相同的大小(以兆字节为单位),有时甚至更大,尽管它只有原来的一半大 String compressPath = Environment.getExternalStorageDirectory()+"/test2.jpg"; FileInputStream in = new FileInputStream(path); Bitmap fullSizeBitmap = BitmapFactory.decodeStream(in); Bitm
String compressPath = Environment.getExternalStorageDirectory()+"/test2.jpg";
FileInputStream in = new FileInputStream(path);
Bitmap fullSizeBitmap = BitmapFactory.decodeStream(in);
Bitmap resized = Bitmap.createScaledBitmap(
fullSizeBitmap,
(int)(fullSizeBitmap.getWidth()*0.5),
(int)(fullSizeBitmap.getHeight()*0.5),
true
);
FileOutputStream mOutputStream = new FileOutputStream(compressPath);
resized.compress(Bitmap.CompressFormat.PNG, 100, mOutputStream);
有什么问题吗?我必须降低质量吗?每个位图的Android文档: 压缩机的质量提示,0-100。0表示压缩为小 尺寸,100意味着压缩可获得最高质量某些格式,如PNG 它是无损的,将忽略质量设置 您的原始输入是JPG,但您正在将其输出到PNG。由于JPG总是会出现质量下降,从而引入工件,因此在转换时会使生成的PNG文件变大。尝试将其保存为质量为80-100的JPG
此外,在我的测试中,压缩到PNG比压缩到JPG需要2-5倍的时间,因为PNG压缩是在软件中完成的,JPG是在硬件中完成的。因此,对于大多数图像,最好压缩为JPG。每个位图的Android文档: 压缩机的质量提示,0-100。0表示压缩为小 尺寸,100意味着压缩可获得最高质量某些格式,如PNG 它是无损的,将忽略质量设置 您的原始输入是JPG,但您正在将其输出到PNG。由于JPG总是会出现质量下降,从而引入工件,因此在转换时会使生成的PNG文件变大。尝试将其保存为质量为80-100的JPG
此外,在我的测试中,压缩到PNG比压缩到JPG需要2-5倍的时间,因为PNG压缩是在软件中完成的,JPG是在硬件中完成的。因此,对于大多数图像,压缩为JPG可能更好。我如何将其输出为PNG?您的代码:
resized.compress(Bitmap.CompressFormat.PNG,100,mOutputStream)
,尝试将Bitmap.CompressFormat.PNG
替换为Bitmap.CompressFormat.JPEG
,看看是否有帮助。如何将其输出为PNG?您的代码:已调整大小。压缩(Bitmap.CompressFormat.PNG,100,mOutputStream)
,尝试将Bitmap.CompressFormat.PNG
替换为Bitmap.CompressFormat.JPEG
,看看是否有帮助。