无损图像旋转

时间:2012-04-13 12:36:42

标签: java android image jpeg rotation

我目前正试图在我的应用中实现旋转功能,即播放图像。

该功能允许用户旋转图像-90度和+90度(切换横向/纵向模式)

这是我的代码:

public Bitmap rotateRight(Bitmap bm) {
    Matrix matrix = new Matrix();
    matrix.postRotate((float)90);

    Bitmap nbm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
    nbm.setDensity(bm.getDensity());
    return nbm; 
}

之后,我将图像保存到文件系统。

这项工作完美,但如果我尝试旋转相同图像的5或6倍,则会出现问题。图像质量会下降,我最终会有一个非常丑陋的图像显示......

你可以帮帮我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

首先:createBitmap()中的最后一个参数是否过滤生成的位图。当它设置为true时,每次执行此操作时,您的位图都会变得更加模糊"。由于您没有更改位图的大小,您可能希望将其关闭。

其次:确保将图像保存为无损格式,例如PNG。如果您保存为JPG或其他有损格式,即使将质量参数设置为最高,每次保存也会降低质量。