2012-04-13 17 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; 
} 

、iは画像を保存しますファイルシステムに転送します。

これは完全に機能しますが、同じ画像を5回または6回回転しようとすると問題が発生します。画質が低下し、最終的には非常に醜い画像が表示されます...

私を助けることができますか? ありがとうございます!

答えて

2

最初:createBitmap()の最後のパラメータは、結果のビットマップをフィルタリングするかどうかです。これがtrueに設定されているので、このアクションを実行するたびにビットマップが少しぼやけて表示されます。ビットマップのサイズを変更しないので、これをオフにすることができます。

第2に、画像をPNGなどのロスレス形式で保存してください。 JPGまたは別の損失のあるフォーマットとして保存すると、品質パラメータを最高に設定しても、保存ごとに品質が低下します。

+0

ありがとうございました!私は今これを試してみるでしょう。 – noli

+0

パーフェクト!それはまさに私が探していたものです!ありがとうございました ! – noli

+0

@noli喜んで助けてください!質問を閉じるために答えを受け入れてください:) – Jave

関連する問題