最近在做一个项目的时候出现需要实时拍照然后作为头像上传服务器的一个操作,按照以前的老项目老是出现拍照后对
图片处理的问题上图片横向显示,这样切割出来的图片也就是横向了,找了很久才解决出来问题的根源,现在记录下来,
以后遇到这个问题就不会出错了。
1:一般相机拍完照后正常显示在屏幕上如图,这样当然没有什么问题:
2:但是在拍完照进入下一步裁剪的时候就出现问题了,如下图所示,在传入裁剪的界面的时候就出现了问题:
3:解决办法就是在裁剪的界面获取到bitmap后对其进行旋转,然后再显示在裁剪的界面上,代码如下:
这里写一个方法,如下所示:
/**
* 对图片进行旋转,拍照后应用老是显示图片横向,而且是逆时针90度,现在给他设置成显示顺时针90度
*
* @param bitmap 图片
* @param degree 顺时针旋转的角度
* @return 返回旋转后的位图
*/
public Bitmap rotateImage(Bitmap bitmap, float degree) {
//create new matrix
Matrix matrix = new Matrix();
matrix.postRotate(degree);
Bitmap bmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return bmp;
}
当调用的时候直接对bitmap进行转换就可以了,比如这里对图片进行顺时针转换90度;
//在这里对图片的方向做一个调整(顺时针调整90度)
mBitmap =rotateImage(mBitmap, 90);
然后再显示在ImageView对应的控件上面:
4:旋转后如图,点击保存,成功完成图片的裁剪成圆形,大功告成!:
版权声明:本文为qq_42618969原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。