在位图压缩时保留图像的分辨率
Preserve resolution of image on bitmap compression
在我的应用程序中,我加载了每个可绘制对象并将其保存在 phone 内存中,但是当我执行此过程时,所有可绘制对象都变为大分辨率:
压缩前:
FileA.PNG 在可绘制对象上:423x101; 9,52Ko
压缩后:
FileA.PNG 在 SD 卡上:1269x303; 89,36Ko
你知道压缩后如何保持(之前)分辨率吗?
我尝试使用 JPEG,但结果相同。
public void SaveImage(int resId){
Bitmap bmp = BitmapFactory.decodeResource(getResources(), resId);
try {
OutputStream fOut = null;
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "Folder", getResources().getResourceEntryName(resId)+".PNG");
file.createNewFile();
fOut = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
} catch (Exception e) {
}
}
如果你能给我一个线索?
谢谢,
如果您获取一个可绘制对象并将其转换为位图,您会得到每个像素的编码,并且这是一个比原始 PNG 文件更大的文件。如果您随后以 100% 质量保存 PNG,那仍然是一张大图像。
将质量设置得更低:
bmp.compress(Bitmap.CompressFormat.PNG, 20, fOut);
发挥质量,直到获得满意的结果。
如果您将图像存储在 drawable
文件夹中,它们会根据您设备的分辨率自动缩放,因此会产生不同的尺寸。
您需要将它们存储在文件夹 drawable-nodpi
或 raw
或 assets
中的某个地方。
在我的应用程序中,我加载了每个可绘制对象并将其保存在 phone 内存中,但是当我执行此过程时,所有可绘制对象都变为大分辨率:
压缩前: FileA.PNG 在可绘制对象上:423x101; 9,52Ko
压缩后: FileA.PNG 在 SD 卡上:1269x303; 89,36Ko
你知道压缩后如何保持(之前)分辨率吗? 我尝试使用 JPEG,但结果相同。
public void SaveImage(int resId){
Bitmap bmp = BitmapFactory.decodeResource(getResources(), resId);
try {
OutputStream fOut = null;
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "Folder", getResources().getResourceEntryName(resId)+".PNG");
file.createNewFile();
fOut = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
} catch (Exception e) {
}
}
如果你能给我一个线索?
谢谢,
如果您获取一个可绘制对象并将其转换为位图,您会得到每个像素的编码,并且这是一个比原始 PNG 文件更大的文件。如果您随后以 100% 质量保存 PNG,那仍然是一张大图像。
将质量设置得更低:
bmp.compress(Bitmap.CompressFormat.PNG, 20, fOut);
发挥质量,直到获得满意的结果。
如果您将图像存储在 drawable
文件夹中,它们会根据您设备的分辨率自动缩放,因此会产生不同的尺寸。
您需要将它们存储在文件夹 drawable-nodpi
或 raw
或 assets
中的某个地方。