這兩天編程弄Android照相機模塊,設置好各種參數后,發現預覽的時候,照片是顛倒了,不是上下顛倒而是顛倒90°。 我的手機是華為U9200,用的Android4.0.3,后來看到http://www.cnblogs.com/skyseraph/archive/2012/03/26/2418665.html這篇文章,增加代碼: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);
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。 如果您想得到原始大小,就把紅色去掉,把最后一句加上來就可以了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
