Android camera預覽引數以及實際影象大小設定
阿新 • • 發佈:2019-01-28
參考一下兩篇博文:
###########################################################333
PreviewSize是預覽的大小,也就是拍照前看到的圖片大小
PictureSize是指最終拍攝到的圖片的大小,也就是圖片的質量
新建一個工程PictureDemo,預設空活動
完成後,在MainActivity上新增程式碼:
package com.administrator.picturedemo; import android.app.Activity; import android.hardware.Camera; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import java.util.List; public class MainActivity extends Activity { private final String TAG = "test"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Camera camera = Camera.open(); List<Camera.Size> pictureSizes = camera.getParameters().getSupportedPictureSizes(); List<Camera.Size> previewSizes = camera.getParameters().getSupportedPreviewSizes(); for (int i=0; i<pictureSizes.size(); i++) { Camera.Size pSize = pictureSizes.get(i); Log.i(TAG+"-------initCamera", "---------------------PictureSize.width = "+pSize.width+"-----------------PictureSize.height = "+pSize.height); } for (int i=0; i<previewSizes.size(); i++) { Camera.Size pSize = previewSizes.get(i); Log.i(TAG+"--------initCamera", "--------------------previewSize.width = "+pSize.width+"-----------------previewSize.height = "+pSize.height); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
在AndroidManifest.xml中新增許可權:
<uses-permission android:name="android.permission.CAMERA" />
執行,在LogCat上自定義過濾器test,檢視該過濾器得到
上圖中的這些引數就是可以設定的previewSize和pictureSize大小
##################################3
獲得了最終的影象,但是大小卻不是我們希望的,所以想要去修改大小
例項程式,獲得bitmap影象myBitmap,改為600x800大小的影象
String readPath = "/sdcard/desktop.jpg"; String writePah = "/sdcard/picSize.jpg"; Bitmap myBitmap = BitmapFactory.decodeFile(readPath); File img = new File(writePah); try { img.createNewFile(); FileOutputStream fos = new FileOutputStream(img); Bitmap endBit = Bitmap.createScaledBitmap(myBitmap, 600, 800, true); //建立新的影象大小 endBit.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
如果不想修改結果大小,則將
Bitmap endBit = Bitmap.createScaledBitmap(myBitmap, 600, 800, true); //建立新的影象大小
endBit.compress(Bitmap.CompressFormat.PNG, 100, fos);
改為
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
即可
新增許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />