android開發自定義相機映象問題
阿新 • • 發佈:2019-02-02
第一次寫部落格,之前一直是沒有寫部落格的習慣。希望多多支援。
言歸正傳。
最近在做一個專案,需要自定義一個拍照功能。做完後發現,使用前置攝像頭拍照,儲存到本地以後,去相簿檢視發現儲存的是原圖。效果:拍的IX儲存後是XI.
按道理來說這樣是沒有問題的,拍的什麼儲存的就是什麼。這樣是沒問題的。但是總覺得很是彆扭。
於是找了很多有關拍照儲存圖片的文章。也麼有找到自己想要的。
最後在一篇部落格中看到這樣一個效果(實現映象效果)的文章:http://blog.csdn.net/lovoo/article/details/51429563
靈機一動,將拍照後的圖片轉成映象儲存,結果就真的實現了,問題也就解決了。
最後就加了兩行程式碼問題就解決了。記錄下希望幫助更多人。有什麼好的方式也希望多多指點。
//鏡子效果 matrix.setScale(-1, 1); matrix.postTranslate(bitmap.getWidth(), 0);
下面是我專案裡面的主要程式碼:
try { if (cameraPosition == 0) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); Matrix matrix = new Matrix(); //鏡子效果 matrix.setScale(-1, 1); matrix.postTranslate(bitmap.getWidth(),0); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth() , bitmap.getHeight(), matrix, true); saveImageToGallery(getBaseContext(), bitmap); } else { // 獲取Jpeg圖片,並儲存在sd卡上 String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(Environment.getExternalStorageDirectory(), fileName); FileOutputStream fos = new FileOutputStream(file); fos.write(data); fos.close(); // 其次把檔案插入到系統圖庫 MediaStore.Images.Media.insertImage(CameraActivity.this.getContentResolver() , file.getAbsolutePath(), fileName, null); // 最後通知相簿更新 CameraActivity.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE , Uri.parse("file://" + file))); } mCamera.stopPreview(); mCamera.startPreview(); } catch (Exception e) { Log.d(TAG, "儲存圖片失敗:::" + e.getLocalizedMessage()); }