從三星手機中獲取圖片顛倒的問題

問題所在

最近做了一個需求躁倒,從手機相冊中獲取圖片并進行顯示,做完測試都沒有問題耻讽,后來突然發(fā)現(xiàn)三星的手機取出的圖片是左轉(zhuǎn)了90度的察纯。wtf~~。(文章轉(zhuǎn)自自己的博客针肥,這里的最近其實是16年5月)

下面這個是不正常的(狀態(tài)欄請無視饼记,隨便拿了個公司的測試機)


正常應該是這樣的


解決方案

我們需要用到一個叫做 ExifInterface的類,google官方對其的描述是:

This is a class for reading and writing Exif tags in a JPEG file or a RAW image file.

Supported formats are: JPEG, DNG, CR2, NEF, NRW, ARW, RW2, ORF and RAF.

Attribute mutation is supported for JPEG image files.

根據(jù)描述這是一個用來操作圖片exiftag信息的類

解決的具體辦法

不是所有的圖片都需要處理慰枕,先檢查

talk is cheap,show you my code

     public 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;
 } 

這是一個檢查圖片的旋轉(zhuǎn)度數(shù)的方法(三星我遇到的都是90)具则,所以,如果你收到返回為90.那就應該要進行處理具帮。

既然你知道有問題了博肋,是不是要處理呢?

talk is cheap,show you my code

public Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {
       Bitmap returnBm = null;
       // 根據(jù)旋轉(zhuǎn)角度蜂厅,生成旋轉(zhuǎn)矩陣
       Matrix matrix = new Matrix();
       matrix.postRotate(degree);
       try {
           // 將原始圖片按照旋轉(zhuǎn)矩陣進行旋轉(zhuǎn)匪凡,并得到新的圖片
           returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                   bm.getHeight(), matrix, true);
       } catch (OutOfMemoryError e) {
       }
       if (returnBm == null) {
           returnBm = bm;
       }
       if (bm != returnBm) {
           bm.recycle();
       }
       return returnBm;
   }

你需要把path轉(zhuǎn)為bitmap,然后此方法是根據(jù)你傳入的角度掘猿,進行旋轉(zhuǎn)(檢測獲取到是多少病游,就傳入多少就行)。

再提供一個path轉(zhuǎn)bitmap的方法

 public static Bitmap getBitmapCompress720P(String pathName) {
        int targetWidth = 720;
        int targetHeight = 1080;
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        Bitmap bitmap;
        
        float imgWidth = options.outWidth;
        float imgHeight = options.outHeight;
        
        int widthRatio = (int) Math.ceil(imgWidth / (float) targetWidth);
        int heightRatio = (int) Math.ceil(imgHeight / (float) targetHeight);
        options.inSampleSize = 1;
        
        if (widthRatio > 1 || widthRatio > 1) {
            if (widthRatio > heightRatio) {
                options.inSampleSize = widthRatio;
            } else {
                options.inSampleSize = heightRatio;
            }
        }
        
        options.inJustDecodeBounds = false;
        bitmap = BitmapFactory.decodeFile(pathName, options);
        return bitmap;
       }

這個方法是path轉(zhuǎn)bitmap稠通。對圖片進行了縮放衬衬,因為bitmap在set imageview的時候,其實你取出來的會很大改橘,多半會失敗滋尉,反正要壓縮,不如這里壓縮唧龄,上面方法是設置的720P的壓縮兼砖,你可以直接改,也可以進行擴展既棺。

注意事項

一般來說讽挟,需要從相冊取圖片的需求都伴隨著上傳,如果你不能直接bitmap上傳丸冕,那可能還需要轉(zhuǎn)回到path存到本地耽梅,這里是一個比較耗時的過程,建議使用異步胖烛,并且眼姐,在上傳時去做轉(zhuǎn)存诅迷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市众旗,隨后出現(xiàn)的幾起案子罢杉,更是在濱河造成了極大的恐慌,老刑警劉巖贡歧,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滩租,死亡現(xiàn)場離奇詭異,居然都是意外死亡利朵,警方通過查閱死者的電腦和手機律想,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绍弟,“玉大人技即,你說我怎么就攤上這事≌燎玻” “怎么了而叼?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長年碘。 經(jīng)常有香客問我澈歉,道長展鸡,這世上最難降的妖魔是什么屿衅? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮莹弊,結(jié)果婚禮上涤久,老公的妹妹穿的比我還像新娘。我一直安慰自己忍弛,他們只是感情好响迂,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著细疚,像睡著了一般蔗彤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疯兼,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天然遏,我揣著相機與錄音,去河邊找鬼吧彪。 笑死待侵,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的姨裸。 我是一名探鬼主播秧倾,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怨酝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了那先?” 一聲冷哼從身側(cè)響起农猬,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎售淡,沒想到半個月后盛险,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡勋又,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年苦掘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楔壤。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鹤啡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹲嚣,到底是詐尸還是另有隱情递瑰,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布隙畜,位于F島的核電站抖部,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏议惰。R本人自食惡果不足惜慎颗,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望言询。 院中可真熱鬧俯萎,春花似錦、人聲如沸运杭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辆憔。三九已至撇眯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虱咧,已是汗流浹背熊榛。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彤钟,地道東北人来候。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像逸雹,于是被迫代替她去往敵國和親营搅。 傳聞我的和親對象是個殘疾皇子云挟,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容