アプリからネイティブカメラアプリを開いて写真をキャプチャし、画面の背景画像として設定してから、ボタンをクリックして回転させたいだけです。3MP カメラで撮影した場合、写真は n 回回転します。カメラの解像度を 5MP 以上に設定すると、ボタンを 5 回クリックするとアプリが強制終了します (写真は 4 回回転します)。
Bitmap rotatedBitmap = null;
int curAngle = 0;
private Bitmap rotateImageBitmap(Bitmap capturedPhotoBitmap) {
if(rotatedBitmap != null )
{
rotatedBitmap = null;
}
Matrix matrix = new Matrix();
curAngle = (curAngle + 90) % 360;
matrix.postRotate(curAngle);
rotatedBitmap = Bitmap.createBitmap(capturedPhotoBitmap, 0, 0, capturedPhotoBitmap.getWidth(), capturedPhotoBitmap.getHeight(), matrix, true);
return rotatedBitmap;
}
これは開発者ガイドからのものです ....
1. 通常、モバイル デバイスはシステム リソースに制約があります。Android デバイスでは、1 つのアプリケーションで使用できるメモリはわずか 16 MB です。
2. ビットマップは、特に写真のような豊富な画像の場合、大量のメモリを消費します。たとえば、Galaxy Nexus のカメラは、最大 2592x1936 ピクセル (5 メガピクセル) の写真を撮影します。使用されるビットマップ構成が ARGB_8888 (Android 2.3 以降のデフォルト) である場合、このイメージをメモリにロードすると、約 19MB のメモリ (2592*1936*4 バイト) が必要になり、一部のデバイスではアプリごとの制限をすぐに使い果たします。
最近のほとんどの携帯電話には、8mp 以上のカメラが搭載されています。そのため写真が大きくなります。 カメラの解像度を気にせずに写真を何回も回転させるにはどうすればよいですか。圧縮する必要がありますか?最善の方法は何ですか?私を助けてください。