我只想从我的应用程序中打开本机相机应用程序以捕获照片并将其设置为我的屏幕的背景图像,然后在单击按钮时旋转它。如果使用 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 设备可以为单个应用程序提供低至 16MB 的内存。
2. 位图占用大量内存,尤其是照片等丰富的图像。例如,Galaxy Nexus 上的相机可拍摄高达 2592x1936 像素(5 兆像素)的照片。如果使用的位图配置是 ARGB_8888(Android 2.3 以后的默认配置),则将此图像加载到内存中大约需要 19MB 内存(2592*1936*4 字节),会立即耗尽某些设备上的每个应用程序的限制。
现在大多数手机都有 8mp 或更高的摄像头。所以图片会很大。 如何在不影响相机分辨率的情况下旋转我的照片“n”次。我需要压缩它吗?什么是最好的方法?请帮我。