[英]How to use bitmap factory to compress image without reduce the quality taken from camera?
我有3張從相機拍攝的圖像,我想設置為3張ImageView。 但是它會拋出OutOfMemory,因為圖像的大小很大。 我讀過,位圖工廠可以壓縮大小而不會降低質量。 問題是我不知道該怎么做。
這是我的onClick按鈕:
openCameraButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = new File(Environment.getExternalStorageDirectory(),
"imagename.jpg");
outPutfileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri);
startActivityForResult(intent,0);
dialog.cancel();
}
});
這是我的onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//result from camera
try{
if (requestCode==0 && resultCode==RESULT_OK){
//bitmap = (Bitmap)data.getExtras().get("data");
bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), outPutfileUri);
drawable = new BitmapDrawable(getResources(), bitmap);
imageSelfie.setImageDrawable(drawable);
}
} catch (Exception ignored){}}
有人可以幫助我嗎?
像這樣使用:
File file = new File(Environment.getExternalStorageDirectory(),"imagename.jpg");
fileDeleted = !file.exists() || file.delete();
if (fileDeleted) {
FileOutputStream out = new FileOutputStream(file);
if (imageToSave != null) {
imageToSave.compress(Bitmap.CompressFormat.JPEG, 65, out);
}}
out.flush();
out.close();
與其使用試圖為您提供完整位圖的媒體存儲,不如您最好打開輸入流並從中加載調整大小的位圖。
InputStream is = getContentResolver().openInputStream(outPutfileUri);
然后,將BitmapFactory.decodeStream()與options參數一起使用,在其中可以將圖像縮小幾次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.