画像を回転させる簡単なコードを検索して見つけました。イメージを ImageView オブジェクトからビットマップに引き出し、回転させてから元に戻しています。これが最も効果的な方法ではないことは承知していますが、CATCH ブロックでエラー メッセージが表示されずにクラッシュすることはないと思います。
これが私のコードです。渡される唯一の値は、回転させたい方向に応じて「r」または「l」です。小さい画像 (1500x1500 以下) は問題なく動作します。2500x2500 サイズあたりで状況が悪化します。
public void rotate(String dir)
{
try
{
float angle = (dir.equals("r") ? 90 : -90);
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
Matrix matrix = new Matrix();
matrix.reset();
matrix.postRotate(angle);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false);
imageView.setImageBitmap(bitmap);
}
catch(Exception e)
{
Utilities.logError(e.toString());
}
}
なぜクラッシュしているのか、なぜ例外が発生しないのかについての手がかりはありますか? 「残念ながらプロセスが停止しました」というメッセージが表示され、アプリのウェルカム画面に戻ります。
ああ、キックのために角度を ZERO (ハードコード) に設定しましたが、クラッシュしませんでした。回転するのに時間がかかりすぎて、Android がフィットしているのではないかと思います。しかし、それを問題として確認する方法や、Androidにもう少し待つように指示する方法がわかりません。
回転のプレビュー画像を縮小しても、保存するときにフル サイズの画像を少なくとも 1 回回転する必要があり、同じ問題が発生します。しませんか?