Android缩放图像副本而不是更改源图像

时间:2017-08-14 07:23:28

标签: android image bitmap

我有以下代码来获取小尺寸的头像:

    Bitmap b= BitmapFactory.decodeFile(selectedImagePath);
    File file = new File(selectedImagePath);
    Bitmap out = Bitmap.createScaledBitmap(b, 128, 128, false);
    FileOutputStream fOut;
    try {
        fOut = new FileOutputStream(file);
        out.compress(Bitmap.CompressFormat.PNG, 100, fOut);
        fOut.flush();
        fOut.close();
        b.recycle();
        out.recycle();
    } 

问题是,在执行此代码后,我在库中的图像也会重新调整,但我必须保留它而不做任何更改。 我尝试使用这样的Bitmap图像副本:

Bitmap bmp2 = b.copy(b.getConfig(), true);
Bitmap out = Bitmap.createScaledBitmap(bpm2, 128, 128, false);

Bitmap bmp2 = Bitmap.createBitmap(b);
Bitmap out = Bitmap.createScaledBitmap(bpm2, 128, 128, false

但我的原始图像仍在变化。我如何获得此图像的新的独立副本?

1 个答案:

答案 0 :(得分:1)

您正在从“selectedImagePath”加载图片,然后当您拨打compress()覆盖原始图片时,输出文件指向同一路径。

尝试为已调整大小的图片创建新名称。

fOut = new FileOutputStream(renamedFile);