`
wang_peng1
  • 浏览: 3940208 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 照相以及关于自动生成的图片分辨率和面积太小问题

阅读更多

String SD_CARD_TEMP_DIR = Environment.getExternalStorageDirectory() + File.separator + "tmpPhoto.jpg";
Intent takePictureFromCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureFromCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new   File(SD_CARD_TEMP_DIR)));
startActivityForResult(takePictureFromCameraIntent, TAKE_PICTURE_WITH_CAMERA);

public void onActivityResult(int requestCode, int resultCode, Intent data) {       
super.onActivityResult(requestCode, resultCode, data);       
//      Picture taken from camera       
  if (requestCode == TAKE_PICTURE_WITH_CAMERA) {               
     if (resultCode == Activity.RESULT_OK) {                      
       // http://code.google.com/p/android/issues/detail?id=1480                       
       //Toast.makeText(AddPhotos.this, "" + data, Toast.LENGTH_SHORT).show();                      
        // on activity return                      
         File f = new File(SD_CARD_TEMP_DIR);                      
          try {                           
                Uri capturedImage =     Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),  f.getAbsolutePath(), null, null));                              
                 Log.i("camera", "Selected image: " + capturedImage.toString());                           
                 f.delete();                       
                 }
         catch (FileNotFoundException e) {                           
         // TODO Auto-generated catch block                          
          e.printStackTrace();                       
          }              
           }               
      else {                       
      Log.i("Camera", "Result code was " + resultCode);               
      }       
      }           
      }

http://code.google.com/p/android/issues/detail?id=1480
讨论的很有意义
Well, now on 1.5, the documentation has been updated: "If the EXTRA_OUTPUT is not
present, then a small sized image is returned as a Bitmap object in the extra field.
If the EXTRA_OUTPUT is present, then the full-sized image will be written to
the Uri value of EXTRA_OUTPUT."

But using the following piece of code:

    private void takePic2() {
        Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(FILE_PATH)));
        startActivityForResult(imageCaptureIntent, 1);
    }
The doc says:
1/ "If the EXTRA_OUTPUT is not present, then a small sized image is returned"
2/ "If the EXTRA_OUTPUT is present, then the *full-sized* image will be written"

Alas 2/ is not true, it produces a 512x384 image - that is not "full sized".

 

2.

private void doTakePhotoAction() { 
    // http://2009.hfoss.org/Tutorial:Camera_and_Gallery_Demo 
    // http://stackoverflow.com/questions/1050297/how-to-get-the-url-of-the-captured-image 
    // http://www.damonkohler.com/2009/02/android-recipes.html 
    // http://www.firstclown.us/tag/android/ 
    // The one I used to get everything working: http://groups.google.com/group/android-developers/msg/2ab62c12ee99ba30  
 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
 
    //Wysie_Soh: Create path for temp file 
    mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), 
                        "tmp_contact_" + String.valueOf(System.currentTimeMillis()) + ".jpg")); 
 
    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri); 
 
    try { 
        intent.putExtra("return-data", true); 
        startActivityForResult(intent, PICK_FROM_CAMERA); 
    } catch (ActivityNotFoundException e) { 
        //Do nothing for now 
    } 
} 
 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode != RESULT_OK) { 
        return; 
    } 
 
    switch (requestCode) { 
 
    case CROP_FROM_CAMERA: { 
        //Wysie_Soh: After a picture is taken, it will go to PICK_FROM_CAMERA, which will then come here 
        //after the image is cropped. 
 
        final Bundle extras = data.getExtras(); 
 
        if (extras != null) { 
            Bitmap photo = extras.getParcelable("data"); 
 
            mPhoto = photo; 
            mPhotoChanged = true; 
            mPhotoImageView.setImageBitmap(photo); 
            setPhotoPresent(true); 
        } 
 
        //Wysie_Soh: Delete the temporary file                         
        File f = new File(mImageCaptureUri.getPath());             
        if (f.exists()) { 
            f.delete(); 
        } 
 
        InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
        mgr.showSoftInput(mPhotoImageView, InputMethodManager.SHOW_IMPLICIT); 
 
        break; 
    } 
 
    case PICK_FROM_CAMERA: { 
        //Wysie_Soh: After an image is taken and saved to the location of mImageCaptureUri, come here 
        //and load the crop editor, with the necessary parameters (96x96, 1:1 ratio) 
 
        Intent intent = new Intent("com.android.camera.action.CROP"); 
        intent.setClassName("com.android.camera", "com.android.camera.CropImage"); 
 
        intent.setData(mImageCaptureUri); 
        intent.putExtra("outputX", 96); 
        intent.putExtra("outputY", 96); 
        intent.putExtra("aspectX", 1); 
        intent.putExtra("aspectY", 1); 
        intent.putExtra("scale", true); 
        intent.putExtra("return-data", true);             
        startActivityForResult(intent, CROP_FROM_CAMERA); 
 
        break; 
 
    } 
    } 
} 

 

 

分享到:
评论

相关推荐

    android拍照或从相册选择照片并裁切关心分辨率

    综上所述,Android应用中的图片裁剪功能涉及到多个技术点,包括图片选择、裁剪操作、分辨率控制以及高分辨率图片处理。掌握这些知识点对于提升应用用户体验和优化性能至关重要。通过分析和实践"PhotoCropper-master...

    android Camera自动拍照、自动对焦并获取指定大小图片

    1.首先android6.0以上版本要动态申请相机和文件读写权限 2.废话不啰嗦,上代码: /** * 摄像头画面采集界面 */ public class DistinguishActivity extends BaseActivity implements SurfaceHolder.Callback, ...

    Android拍照,连拍以及自动拍照

    本文将深入探讨如何实现Android应用中的基本拍照、连拍以及自动拍照功能。 首先,让我们从基础的单次拍照开始。在Android中,我们可以利用`Intent`来调用系统相机进行拍照。以下是一个简单的示例: ```java Intent...

    android手机相机自动连续拍照

    本文将深入探讨如何利用Android的Camera API或Camera2 API来创建一个能自动连续拍照的程序,并提供关于设置摄像头、调整参数以及保存照片到SD卡的相关知识。 1. **开启相机服务** 在Android中,相机功能通过Camera...

    安卓联系拍照压缩图片分辨率

    总的来说,安卓联系拍照压缩图片分辨率涉及到使用Camera2 API实现连续拍照,选择合适的预览和图片尺寸,以及运用Bitmap的压缩方法和第三方库来优化图片质量和大小。开发者需要根据实际需求和设备特性做出最佳选择,...

    Android代码-Android自定义相机实现身份证拍照,并加入自动对焦与图片不规则裁剪

    Android自定义身份证相机-IDCardCamera 效果图: 功能特点 自定义相机界面 支持开启闪光灯 支持手动触摸屏幕对焦 支持自动对焦 支持图片自动裁剪 支持图片手动不规则裁剪 2 使用 Step 1. 添加JitPack仓库 在...

    android隐藏式自动拍照相机

    在Android平台上,开发一款隐藏式自动拍照相机应用是一项技术挑战,因为这涉及到多个核心组件的交互和系统权限的管理。这个项目"android隐藏式自动拍照相机"是基于`com.kevalpatel2106:hiddencamera:1.3.3`库实现的...

    android 超高仿微信图片选择和拍照

    考虑到Android设备的碎片化,代码需要适配不同分辨率和Android版本。例如,使用比例计算布局大小,以及针对低版本Android进行兼容性处理。 10. **性能优化**: 在处理大量图片时,注意内存管理,避免内存溢出。...

    android 安卓 全屏照相程序自动保存

    综上所述,开发一个全屏照相程序并自动保存到存储卡,需要深入了解Android的相机API、SurfaceView机制以及文件系统操作。这个过程涉及到了多个技术层面,需要开发者具备扎实的Android编程基础。通过实践这些知识点,...

    android 照相、压缩图片、图片缓存

    在Android开发中,照相、压缩图片以及图片缓存是三个关键的技术环节,它们对于提升应用性能和用户体验至关重要。下面将分别对这三个方面进行详细阐述。 1. Android 照相: - 活动(Activity)启动:使用Intent启动...

    android studio拍照+选择图片

    在Android开发中,"android studio拍照+选择图片"是一个常见的需求,主要涉及到用户交互和多媒体处理方面的技术。本文将深入探讨如何在Android Studio项目中实现这两个功能,包括使用相机拍照和从图库选择图片。 ...

    Android自定义二维码生成

    Android二维码生成,包括一般二维码、彩色二维码、带logo二维码或带logo的彩色二维码、黑色色块用图片代替的二维码。可拍照和相册选取图片,二维码长按保存至本地。具体效果请看:...

    Android11 适配,拍照问题

    Android11 适配,拍照问题。兼容Android11 targetSDk 31。有拍照功能和从相册选择图片,获取图片路径,保存图片。关联文章https://blog.csdn.net/u013778491/article/details/125638960

    不错的android原生图片选择及拍照第三方库

    在Android开发中,图片选择和拍照是常见的功能需求,尤其对于社交、相册类应用更是不可或缺。本篇文章将深入探讨一款适用于Android原生环境的图片选择及拍照第三方库——PhotoPicker,它能很好地适配多个Android系统...

    android 主流分辨率及对应机型

    ### Android主流分辨率及对应机型详解 #### 一、引言 在移动互联网时代,随着智能手机的普及和技术的进步,屏幕分辨率成为衡量手机显示效果的重要指标之一。不同分辨率的屏幕能够为用户提供不同的视觉体验,同时也...

    Android照相机自动对焦例子

    不同的Android设备可能具有不同的相机硬件和功能支持,因此在实现自动对焦时需要考虑到设备兼容性问题。可以使用`Camera.getParameters().getSupportedFocusModes()`或`CameraCharacteristics`来查询设备支持的对焦...

    android 二维码生成 图片扫描 照相机扫描 demo

    这是一个运行在android studio上的项目,功能有:二维码生成,照相机扫描二维码,扫描图片识别二维码,项目的部分代码和效果图,可以查看项目的网址:http://blog.csdn.net/qq_21445563/article/details/50886879

    android UVC拍照录像

    Android UVC(Universal Video Class)拍照录像涉及到的是在Android设备上使用USB摄像头进行图像和视频采集的功能。UVC是USB设备类定义的一部分,主要用于统一不同厂商的视频设备接口,使得设备能够即插即用,无需...

    android 拍照并上传图片

    通过以上步骤,我们可以实现一个完整的Android应用,它可以调用相机拍照,将图片保存到本地,然后通过HTTPServlet上传到PC端服务器。在实际项目中,还可能需要考虑错误处理、进度显示、多图上传等复杂情况。理解并...

Global site tag (gtag.js) - Google Analytics