這兩天編程弄Android照相機模塊,設置好各種參數後,發現預覽的時候,照片是顛倒瞭,不是上下顛倒而是顛倒90°。 我的手機是華為U9200,用的Android4.0.3,增加代碼:myCamera.setDisplayOrientation(90); 然後預覽就正常瞭。但是拍攝的照片在電腦上打開一看,仍然是傾斜的。傾斜瞭90°,後來加上這句:myParameters.set("rotation", 90); 這個是讓照片旋轉90°一切正常瞭! 之前設瞭很多//myParameters.set("orientation", "portrait");或//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);發現都沒有作用。就差上面那兩句話!
如何查看自己的攝像頭支持的PreviewSize和 PictureSize呢?這裡簡單說下,PreviewSize是預覽的大小,也就是拍照前看到的圖片大小,你可以試一下,這個參數設置不同,在同樣焦距下,你拍攝桌子上一個固定距離的一個東西,看到的視野會不同。PictureSize是指最終拍攝到的圖片的大小,也就是圖片的質量。怎麼查看呢?
首先在主程序的開始private static final String TAG = "MyAndroid";
然後: List<Size> pictureSizes ;
List<Size> previewSizes;
for (int i = 0; i < pictureSizes.size(); i++)
{
psize = pictureSizes.get(i);
Log.i(TAG +"initCamera", "PictrueSize,width: " + psize.width + " height" + psize.height);
}
for (int i = 0; i < previewSizes.size(); i++)
{
psize = previewSizes.get(i); www.aiwalls.com
Log.i(TAG +"initCamera", "previewSize,width: " + psize.width + " height" + psize.height);
}
就可以查看瞭!
我的PictureSize的參數分別是:
預覽的參數是:
但我想得到最終是寬度為600,高度為800的圖片。怎麼半呢? 這裡要說明下,由於前面的myParameters.set("rotation", 90); 你如果設置照相機PictureSize的參數是M*N,得到的圖片大小是N*M,因為你旋轉瞭。怎麼才能得到我想要的指定大小的圖片呢,
FileOutputStream fout = new FileOutputStream(fTest);
BufferedOutputStream bos = new BufferedOutputStream(fout);
Bitmap mBitmap = Bitmap.createScaledBitmap(bm, 600, 800, true);
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);
//
bm.compress(Bitmap.CompressFormat.JPEG, 100, bos);
加上紅色部分的代碼就可以瞭。bm是最初的照片數據,是個Bitmap。 如果您想得到原始大小,就把紅色去掉,把最後一句加上來就可以瞭。
作者:yanzi1225627