android 豎屏拍照旋轉90度

來源:互聯網
上載者:User

 第一步: AndroidManifest.xml 在Activity添加以下一個屬性 ?<span>android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="sensor",為的是能夠橫豎屏切換不用再次調用onCreate方法,直接調用onConfigurationChanged方法。screenSize是相容4.0系統的才可以生效,否則方法沒效。</span>?<application android:label="@string/app_name"        android:icon="@drawable/ic_launcher">       <activity android:name=".MainActivity"                   android:label="@string/app_name"                  <span style="color: #ff0000;">android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="sensor"</span>>             <intent-filter>                 <action android:name="android.intent.action.MAIN" />                 <category android:name="android.intent.category.LAUNCHER" />             </intent-filter>         </activity>    </application>第二步,解決豎屏拍照後儲存圖片會旋轉90度的問題。這裡只能夠採取曲線救國了,就是把已經拍好的圖片用代碼旋轉90度。 首先判斷當前是橫拍還是豎拍,然後在調用相機拍照後,在儲存圖片的方法裡,進行豎拍的照片90度旋轉。       ?PictureCallback jpeg = new PictureCallback() {                     @Override         public void onPictureTaken(byte[] data, Camera camera) {              // TODO Auto-generated method stub               Bitmap bMap;             try             {// 獲得圖片                                                bMap = BitmapFactory.decodeByteArray(data, 0, data.length);                        Bitmap bMapRotate;  Configuration config = getResources().getConfiguration();if (config.orientation==1){ // 堅拍Matrix matrix = new Matrix();matrix.reset();matrix.postRotate(270);bMapRotate = Bitmap.createBitmap(bMap, 0, 0,bMap.getWidth(), bMap.getHeight(),matrix, true);bMap = bMapRotate;}                      // Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length);              File file = new File(filePath);             BufferedOutputStream bos =                  new BufferedOutputStream(new FileOutputStream(file));             bMap.compress(Bitmap.CompressFormat.JPEG,100, bos);//將圖片壓縮到流中             bos.flush();//輸出             bos.close();//關閉             }catch(Exception e)              {                 e.printStackTrace();             }                        }     };   關鍵代碼是以上。    當用豎拍轉橫拍,還是橫拍轉豎拍,都要先在surfaceChanged方法,停止預覽相機,重新設定下網路攝影機就不會再出現90度旋轉。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.