如何保存与原始尺寸相同的位图?

时间:2017-10-18 13:15:08

标签: android image bitmap resize save

我正在编写一个函数,它采用位图,编辑并保存。 但问题是保存的图像不具有相同的尺寸。 任何人都可以帮我修复它吗?我希望输出图像的长度和宽度与原始图像的长度和宽度相同。

这是我的代码 -

public void bitTest(View v) throws IOException {
    Drawable t=getResources().getDrawable(R.drawable.slider_touch,getTheme());//the image to be processed
    Bitmap bit=((BitmapDrawable) t).getBitmap();//its bitmap
    Bitmap finalImage=Bitmap.createBitmap(bit.getWidth(),bit.getHeight(),bit.getConfig());//creating another bitmap of same dimensions

    Context context=getApplicationContext();
    FileOutputStream fos = context.openFileOutput("test.png", Context.MODE_PRIVATE);//saving
    finalImage.compress(Bitmap.CompressFormat.PNG,100, fos);
    fos.close();

}

此处原始尺寸的尺寸为288x192,但输出图像的尺寸为605x403。 我哪里错了?

我也试过改变质量,但它不起作用。

1 个答案:

答案 0 :(得分:-1)

将图像资源放在drawable目录中时,解码后的图像大小取决于正在运行的设备的屏幕大小。

将您的drawable保留在文件夹drawable-nodpi内而不是其他可绘制目录中,以便保留图像大小。

除了使用BitmapDrawable之外,您还可以使用BitmapFactory.decodeResource()

直接从资源中解码位图