1. 程式人生 > >Android Camera開發解析度 清晰度 影象變形

Android Camera開發解析度 清晰度 影象變形

設定了previewSize和pictureSize:
但是通過打Log看出當時設定的時候解析度是改變了的,然而正是拍照的時候解析度又變回系統預設的了,在不同的機子上預設的解析度不同。
setParameters failed 問題我的華為的預設的previewSize是最高的,然而pictureSize又是最低的:
致預覽的圖片十分清晰,而拍出的照片十分小且模糊。
同樣使用預設解析度,在一些機子上會出現預覽變形的情況。 

1.設定預覽分辨路和圖片解析度:

Camera.Parameters param = camera.getParameters();
param.setPreviewSize(width, height); //width一般大於height

     setParameters failed問題解決:
param.setPictureSize(width, height);//width一般大於height
        setParameters failed問題解決:

camera.setPerviewSize(screenWidth,screenHeight);// 不要這樣設定,不然不會設定成功的;

camera.setPerviewSize(screenHeight , screenWidth );//應該這樣設定,第一個引數大於後面那個引數

 params.set("orientation", "landscape");//這樣設定也可以

camera.setDisplayOrientation(90);//相機旋轉90度,便成豎屏

camera.setParameters(param);//這句話不要忘記

2. setParameters failed問題解決:

Java.lang.RuntimeException: setParameters failed
 at Android.hardware.Camera.native_setParameters(Native Method)
 at android.hardware.Camera.setParameters(Camera.java:1834)

3.width一般大於height,因為預設的攝像頭是橫向的

,在我們預覽的時候也要設定

camera.setDisplayOrientation(90);

4.預覽變形解決:
一般手機螢幕解析度為16:9,而可能預設的預覽解析度是4:3的,
然而我們在設定佈局檔案的時候設定的預覽介面SurfaceView寬高均為match_parent,讓預覽介面充滿螢幕,
所以自然就會出現預覽變形的情況。

  1. <SurfaceView  
  2.         android:id="@+id/surface_2"
  3.         android:layout_width="match_parent"
  4.         android:layout_height="wrap_content"
  5.         android:layout_centerInParent="true"/>  

通過Context進行:
  1. WindowManager windowManager = mcontext.getWindowManager();  
  2.      Display display = windowManager.getDefaultDisplay();  
  3.      DisplayMetrics metrics = new DisplayMetrics();  
  4.      //獲取螢幕的寬和高
  5.      display.getMetrics(metrics);  
  6.      screenWidth = metrics.widthPixels;  
  7.      screenHeight = metrics.heightPixels;  
  1. 計算預覽解析度的寬高比:  
  2. public String getSurfaceViewSize(int width, int height) {  
  3.         if (equalRate(width, height, 1.33f)) {  
  4.             return"4:3";  
  5.         } else {  
  6.             return"16:9";  
  7.         }  
  8.     }  
  9.     publicboolean equalRate(int width, int height, float rate) {  
  10.         float r = (float)width /(float) height;  
  11.         if (Math.abs(r - rate) <= 0.2) {  
  12.             returntrue;  
  13.         } else {  
  14.             returnfalse;  
  15.         }  
  16.     }  

  1. 根據解析度設定SurfaceView的大小:  
  2.   /** 
  3.      * 根據解析度設定預覽SurfaceView的大小以防止變形 
  4.      * 
  5.      * @param surfaceSize 
  6.      */
  7.     privatevoid setSurfaceViewSize(String surfaceSize) {  
  8.         ViewGroup.LayoutParams params = surfaceView.getLayoutParams();  
  9.         if (surfaceSize.equals("16:9")) {  
  10.             params.height = ViewGroup.LayoutParams.MATCH_PARENT;  
  11.         } elseif (surfaceSize.equals("4:3")) {  
  12.             params.height = 4 * screenWidth / 3;  
  13.         }  
  14.         surfaceView.setLayoutParams(params);  


  1. 這樣基本就不會變形了,還有些手機可能既不是169也不是4:3 的螢幕解析度,都可以通過計算比例適當縮放使其不變形。  


設定了previewSize和pictureSize,但是通過打Log看出當時設定的時候解析度是改變了的,然而正是拍照的時候解析度又變回系統預設的了,在不同的機子上預設的解析度不同。setParameters failed 問題我的華為的預設的previewSize是最高的,然而pictureSize又是最低的,導致預覽的圖片十分清晰,而拍出的照片十分小且模糊。同樣使用預設解析度,在一些機子上會出現預覽變形的情況。

相關推薦

Android Camera開發解析度 清晰度 影象變形

設定了previewSize和pictureSize:但是通過打Log看出當時設定的時候解析度是改變了的,然而正是拍照的時候解析度又變回系統預設的了,在不同的機子上預設的解析度不同。setParameters failed 問題我的華為的預設的previewSize是最高

Android Camera開發解析度 清晰度 影象變形

設定了previewSize和pictureSize:但是通過打Log看出當時設定的時候解析度是改變了的,然而正是拍照的時候解析度又變回系統預設的了,在不同的機子上預設的解析度不同。setParameters failed 問題我的華為的預設的previewSize是最高的,然而pictureSize又是最

淺析Android Camera開發中的三個尺寸和三種變形 貢獻一個自適配Picturesize和Previewsiz

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

玩轉Android Camera開發(二):使用TextureView和SurfaceTexture預覽Camera 基礎拍照demo

處理 pict all sans 格式 facet ace ets nth Google自Android4.0出了TextureView。為什麽推出呢?就是為了彌補Surfaceview的不足。另外一方面也是為了平衡GlSurfaceView。當然這是本人揣度的。關於Te

玩轉Android Camera開發 四 預覽介面四周暗中間亮,只拍攝矩形區域圖片 附完整原始碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

玩轉Android Camera開發 五 基於Google自帶演算法實時檢測人臉並繪製人臉框 網路首發 附完整demo

                    本文主要介紹使用Google自帶的FaceDetectionListener進行人臉檢測,並將檢測到的人臉用矩形框繪製出來。本文程式碼基於PlayCameraV1.0.0,在Camera的open和preview流程上進行了改動。原先是放在單獨執行緒裡,這次我又把它放到

Android Camera開發 給攝像頭預覽介面加個ZoomBar(附完整程式碼下載)

                廢話不說了,就是加個seekbar,拖動的話能夠調節焦距,讓畫面變大或縮小。下面是核心程式:一,camera的佈局檔案<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    x

玩轉Android Camera開發(一):Surfaceview預覽Camera,基礎拍照功能完整demo

雜家前文是在2012年的除夕之夜倉促完成,後來很多人指出了一些問題,瑣事纏身一直沒有進行升級。後來隨著我自己的使用,越來越發現不出個升級版的demo是不行了。有時候就連我自己用這個demo測一些效能、功能點,用著都不順手。當初程式碼是在linux下寫的,弄到windows裡下

Android Camera增加自定義影象處理並錄製MP4

在我的一篇部落格Android Camera API/Camera2 API 相機預覽及濾鏡、貼紙等處理中,介紹瞭如何給相機增加濾鏡貼紙的方法,也就是自定義影象處理。而另外一篇部落格Android硬編碼——音訊編碼、視訊編碼及音視訊混合介紹了一種編碼錄製MP4的

【轉】Android Camera 相機開發詳解

exc troy start 當前 container rac google getconf 對比度 在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和架構上做了巨大的變動, 但是基於眾所周知的原因

開發Android Camera—使用Kotlin語言,完成第一個自定義相機

對於首次使用Kotlin語言開發,在網上苦於尋找不到Kotlin語言編寫的相機程式碼,故寫下這篇部落格。 好了,咱們進入主題 在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera介面。Camera2在介面和架構上做了巨大的變動,但是基於眾所周知的原

android native開發-native實現對camera的操作

通過native實現camera的操作 原始碼路徑:frameworks/av/camera/ndk/ 參考的test原始碼路徑:cts/tests/tests/graphics/jni/CameraTestHelpers.cpp 1/* 2 * Copyrig

Android Camera拍照後擷取指定大小區域的影象

    最近公司需要實現拍照時需要實現自定義相機,佈局中給定輔助拍照區域圖。拍照後只保留拍照部分的圖,現對實現過程做一下記錄便於以後修改。    思考:相機拍照後的bitmap是一個完整的bitmap,如何定位自己想要儲存的影象的的位置是關鍵。例如我的需求是儲存的地方是 

Android實戰開發:獲得螢幕物理尺寸、密度及解析度

通過程式去了解硬體情況是一件十分有意思的事情。很早我就研究在WM6.5上獲得螢幕物理尺寸,但一直沒有成功。後來又想要在Android上有所突破,不過在今天之前得到的尺寸都不準確。雖然很多人認為沒必要這麼較真,因為貌似很多情況下用不到。不過我就當這是一件很有挑戰性的事,一定要做

Android 相機開發 Camera-附帶掃碼遮罩介面實現原理(自動聚焦)

相機遮罩實現原理,FrameLayout中如果控制元件一樣大,同一時間只能見到最上面的。 1.自定義ViewFindView,相機遮罩介面 public class ViewFinderView extends View { //相機遮罩框外面的線,陰影區域,滾

Android camera預覽引數以及實際影象大小設定

參考一下兩篇博文: ###########################################################333 PreviewSize是預覽的大小,也就是拍照前看到的圖片大小 PictureSize是指最終拍攝到的圖片的大小,也就

Android NDK開發 native層獲取Surface並顯示影象 思路過程

import java.io.File;import java.io.FileInputStream;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Canvas;import android

android攝像頭開發,將Camera.onPreviewFrame裡面的data轉換成bitmap

最近在做的幾個專案都和攝像頭有關,其中不乏影象識別的,但是拍照識別有時候感覺還是有些low,直接把畫面一對準自己就識別了多好,就像zxing掃描二維碼一樣,於是上網查了很多資料,找到了需要給camera物件設定一個 Camera.PreviewCallback,在這個回撥中實

Android Camera 相機開發詳解

在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera介面。Camera2在介面和架構上做了巨大的變動, 但是基於眾所周知的原因,我們還必須基於 Android 4.+ 系統進行開發。本文介紹的是Camera介面開發及其使

Android開發】圖形影象處理技術-實現Android動畫的兩種方式

在應用Android進行專案開發時,特別是在進行遊戲開發時,經常需要涉及動畫。Android中的動畫通常可以分為逐幀動畫(Frame Animation)和補間動畫(Tween Animation)兩種。下面將分別介紹這兩種動畫。 一.實現逐幀動畫(Frame Animat