2012-04-13 96 views
1

我目前正试图在我的应用程序中实现一个旋转功能,这是与图像玩。无损图像旋转

该功能将允许用户旋转图像在-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倍相同的图像出现问题。图像质量将下降,我终于会有一个非常丑陋的图像显示...

你能帮我吗? 提前谢谢!

回答

2

第一:createBitmap()中的最后一个参数是是否过滤得到的位图。如果设置为true,则每次执行此操作时,您的位图都会变得稍微“模糊”。由于您不更改位图的大小,因此可能需要关闭此功能。

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

+0

谢谢!我现在就试试这个。 – noli 2012-04-13 12:46:13

+0

完美!这正是我期待的!谢谢 ! – noli 2012-04-13 12:50:30

+0

@noli很高兴帮助!请接受回答关闭问题:) – Jave 2012-04-13 12:51:26