2010-03-09 229 views
1

我在使用ACTION_IMAGE_CAPTURE捕获图片后出现了保存图片的问题意图图片变得非常小,它的分辨率是27X44我使用1.5 android模拟器,这是代码和我感谢所有帮助:小尺寸图片问题

myImageButton02.setOnClickListener 
(
    new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      // create camera intent 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      //Grant permission to the camera activity to write the photo. 
      intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
      //saving if there is EXTRA_OUTPUT 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File 
      (Environment.getExternalStorageDirectory(), "testExtra" + String.valueOf 
      (System.currentTimeMillis()) + ".jpg"))); 
      // start the camera intent and return the image 
      startActivityForResult(intent,1); 
     } 
    } 
); 
@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    // if Activity was canceled, display a Toast message 
    if (resultCode == RESULT_CANCELED) 
    { 
     Toast toast = Toast.makeText(this,"camera cancelled", 10000); 
     toast.show(); 
     return; 
    } 

    // lets check if we are really dealing with a picture 
    if (requestCode == 1 && resultCode == RESULT_OK) 
    { 
     String timestamp = Long.toString(System.currentTimeMillis()); 
     // get the picture 
     Bitmap mPicture = (Bitmap) data.getExtras().get("data"); 
     // save image to gallery 
     MediaStore.Images.Media.insertImage(getContentResolver(), mPicture, timestamp, timestamp); 
    } 
} 
} 
+1

@Haya,请妥善缩进代码,以便它是可读 – 2010-03-09 16:37:54

+0

大评论,哈雅。你的代码现在也更容易阅读。对不起,虽然我没有答案,但希望有人能够尽快提供帮助。 – 2010-03-09 18:34:32

回答

2

看看你在做什么:

  • 您指定当您访问的图片您在刚刚拍摄的照片存储与intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File (Environment.getExternalStorageDirectory(), "testExtra" + String.valueOf (System.currentTimeMillis()) + ".jpg")));
  • 路径'拖'数据意图与Bitmap mPicture = (Bitmap) data.getExtras().get("data");

显然,你不从它的文件访问图片。据我所知,Intents并不是用来传输大量数据的,因为它们是通过例如活动。你应该做的是从摄像机意图创建的文件中打开图片。看起来像这样:

BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
// Limit the filesize since 5MP pictures will kill you RAM 
bitmapOptions.inSampleSize = 6; 
imgBitmap = BitmapFactory.decodeFile(pathToPicture, bitmapOptions); 

这应该做的伎俩。它曾经以这种方式为我工作,但自从2.1在几款设备上遇到问题。在Nexus One上工作(仍然)很好。
看看MediaStore.ACTION_IMAGE_CAPTURE

希望这会有所帮助。
问候,
Steff