照相机捕获照片保存大小以及保存位置的问题

1.有时候拍照的图片比实际的要小

这可能和版本有管

不过在2.0上以上 可以没问题

在1.6一下即使你用hw.camera.maxHorizontalPixels 和 hw.camera.maxVerticalPixels.
都会得到原大小的1/4

 

Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File out = new File(Environment.getExternalStorageDirectory(), "camera.jpg");
Uri uri = Uri.fromFile(out);
imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);

上述没有问题

上面的存入制定目录。存入存放图片的地方

 

SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
           String filename = timeStampFormat.format(new Date());
           ContentValues values = new ContentValues();
       values.put(Media.TITLE, filename);
       values.put(Media.DESCRIPTION, "Image from Android Emulator");
       photoUri =
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
      
       Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
           startActivityForResult(inttPhoto, 0);

2 然后相关处理就是

private void saveFullImage() { 
 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
 
File file = new File(Environment.getExternalStorageDirectory(), "test.jpg"); 
  outputFileUri
= Uri.fromFile(file); 
  intent
.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
  startActivityForResult
(intent, TAKE_PICTURE); 
} 
 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
 
if ((requestCode == TAKE_PICTURE) && (resultCode == Activity.RESULT_OK)) { 
   
// Check if the result includes a thumbnail Bitmap 
   
if (data == null) {     
     
// TODO Do something with the full image stored 
     
// in outputFileUri. Perhaps copying it to the app folder 
   
} 
 
} 
} 

 

3. 一个可以兼容的处理方法:

 

public boolean hasImageCaptureBug() { 
 
   
// list of known devices that have the bug 
   
ArrayList<String> devices = new ArrayList<String>(); 
    devices
.add("android-devphone1/dream_devphone/dream"); 
    devices
.add("generic/sdk/generic"); 
    devices
.add("vodafone/vfpioneer/sapphire"); 
    devices
.add("tmobile/kila/dream"); 
    devices
.add("verizon/voles/sholes"); 
    devices
.add("google_ion/google_ion/sapphire"); 
 
   
return devices.contains(android.os.Build.BRAND + "/" + android.os.Build.PRODUCT + "/" 
           
+ android.os.Build.DEVICE); 
 
}

 

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
if (hasImageCaptureBug()) { 
    i
.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("/sdcard/tmp"))); 
} else { 
    i
.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
} 
startActivityForResult
(i, mRequestCode); 

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     
switch (requestCode) { 
         
case GlobalConstants.IMAGE_CAPTURE: 
                 
Uri u; 
             
if (hasImageCaptureBug()) { 
                 
File fi = new File("/sdcard/tmp"); 
                 
try { 
                     u
= Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null)); 
                     
if (!fi.delete()) { 
                         
Log.i(t, "Failed to delete " + fi); 
                     
} 
                 
} catch (FileNotFoundException e) { 
                     e
.printStackTrace(); 
                 
} 
             
} else { = intent.getData(); 
               
} 
   
} 

                        u

第三种方法虽然可以解决版本问题

对存在bug的版本 得到的大小也只有512宽 版本正常的 可以得到想要大小

还有一个缺点 可能版本的bug被修正 那样你的bug函数就需要修改

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值