三星Android5.0系统以上 相册中选择相片后 图片旋转了90度问题
生活随笔
收集整理的這篇文章主要介紹了
三星Android5.0系统以上 相册中选择相片后 图片旋转了90度问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個問題在實際應用開發中也是無意中碰到,下面給出代碼解決
其中avatar為頭像地址,path為在相冊中選擇完的相片地址
int degree = ImageUtils.readPictureDegree(path);Bitmap bmpOk = ImageUtils.rotateToDegrees(BitmapUtils.getSampleBitmap(path, 800, 800).getBitmap(), degree);mHeadImageView.setImageBitmap(bmpOk);下面是ImageUtils工具類中readPictureDegree方法,和rorateToDegress方法
/*** 圖片旋轉* @param tmpBitmap* @param degrees* @return*/public static Bitmap rotateToDegrees(Bitmap tmpBitmap, float degrees) {Matrix matrix = new Matrix();matrix.reset();matrix.setRotate(degrees);return tmpBitmap =Bitmap.createBitmap(tmpBitmap, 0, 0, tmpBitmap.getWidth(), tmpBitmap.getHeight(), matrix, true);}/*** 讀取照片exif信息中的旋轉角度* @param path 照片路徑* @return角度*/public static int readPictureDegree(String path) {int degree = 0;try {ExifInterface exifInterface = new ExifInterface(path);int orientation =exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL);switch (orientation) {case ExifInterface.ORIENTATION_ROTATE_90:degree = 90;break;case ExifInterface.ORIENTATION_ROTATE_180:degree = 180;break;case ExifInterface.ORIENTATION_ROTATE_270:degree = 270;break;}} catch (IOException e) {e.printStackTrace();}return degree;}?然后將旋轉后的bitmap保存到本地,將保存的地址賦值給avatar
try {avatar = BitmapUtils.saveImg(bmpOk,"head");} catch (Exception e) {e.printStackTrace();}下面給出我的BitmapUtils工具類saveImg的方法
/*** 將bitmap作為圖片保存到本地并返回保存地址* @param b* @param name* @return* @throws Exception*/public static String saveImg(Bitmap b, String name) throws Exception {String path = BaseApplication.getBaseApplication().getBaseExternalCacheDir()+ File.separator + "temp/image/";File mediaFile = new File(path + File.separator + System.currentTimeMillis()+name + ".jpg");if (mediaFile.exists()) {mediaFile.delete();}if (!new File(path).exists()) {new File(path).mkdirs();}mediaFile.createNewFile();FileOutputStream fos = new FileOutputStream(mediaFile);b.compress(Bitmap.CompressFormat.PNG, 80, fos);fos.flush();fos.close();b.recycle();b = null;System.gc();return mediaFile.getPath();}好了,現在你選擇照片后,控件顯示的圖片正常角度,最后拿到這個我們旋轉成正常圖片保存的地址后再上傳到你的服務器就OK了。
轉載于:https://www.cnblogs.com/yangqi0226/p/5192586.html
總結
以上是生活随笔為你收集整理的三星Android5.0系统以上 相册中选择相片后 图片旋转了90度问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 把时间当做朋友
- 下一篇: win2003配置apache2.2下,