`

从图库或照相中选取照片

 
阅读更多
package com.michael.testcutpic;

import java.io.ByteArrayOutputStream;  
import java.io.File;  
import android.app.Activity;  
import android.content.Intent;  
import android.graphics.Bitmap;  
import android.net.Uri;  
import android.os.Bundle;  
import android.os.Environment;  
import android.provider.MediaStore;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.ImageView;  
  
public class TestCutPicActivity extends Activity {  
  
    public static final int NONE = 0;  
    public static final int PHOTOHRAPH = 1;// 拍照  
    public static final int PHOTOZOOM = 2; // 缩放  
    public static final int PHOTORESOULT = 3;// 结果  
  
    public static final String IMAGE_UNSPECIFIED = "image/*";  
    ImageView imageView = null;  
    Button button0 = null;  
    Button button1 = null;  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        imageView = (ImageView) findViewById(R.id.imageID);  
        button0 = (Button) findViewById(R.id.btn_01);  
        button1 = (Button) findViewById(R.id.btn_02);  
  
        button0.setOnClickListener(new OnClickListener() {  //启动相册
            @Override  
            public void onClick(View v) {  
                Intent intent = new Intent(Intent.ACTION_PICK, null);  
                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);  
                startActivityForResult(intent, PHOTOZOOM);  
            }  
        });  
  
        button1.setOnClickListener(new OnClickListener() {  //启动相机
  
            @Override  
            public void onClick(View v) {  
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));  
                startActivityForResult(intent, PHOTOHRAPH);  
            }  
        });  
    }  
  
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (resultCode == NONE)  
            return;  
        // 拍照  
        if (requestCode == PHOTOHRAPH) {  
            //设置文件保存路径这里放在跟目录下  
            File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");  
            startPhotoZoom(Uri.fromFile(picture));  
        }  
          
        if (data == null)  
            return;  
          
        // 读取相册缩放图片  
        if (requestCode == PHOTOZOOM) {  
            startPhotoZoom(data.getData());  
        }  
        // 处理结果  
        if (requestCode == PHOTORESOULT) {  
            Bundle extras = data.getExtras();  
            if (extras != null) {  
                Bitmap photo = extras.getParcelable("data");  
                ByteArrayOutputStream stream = new ByteArrayOutputStream();  
                photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 - 100)压缩文件  
                imageView.setImageBitmap(photo);  
            }  
  
        }  
  
        super.onActivityResult(requestCode, resultCode, data);  
    }  
  
    public void startPhotoZoom(Uri uri) {  
        Intent intent = new Intent("com.android.camera.action.CROP");  
        intent.setDataAndType(uri, IMAGE_UNSPECIFIED);  
        intent.putExtra("crop", "true");  
        // aspectX aspectY 是宽高的比例  
        intent.putExtra("aspectX", 1);  
        intent.putExtra("aspectY", 1);  
        // outputX outputY 是裁剪图片宽高  
        intent.putExtra("outputX", 64);  
        intent.putExtra("outputY", 64);  
        intent.putExtra("return-data", true);  
        startActivityForResult(intent, PHOTORESOULT);  
    }  
}  

 

 2.main.xml

 

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical" android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  
    <TextView android:layout_width="fill_parent"  
        android:layout_height="wrap_content" android:text="@string/hello" />  
    <ImageView android:id="@+id/imageID"  
        android:adjustViewBounds="true" android:maxWidth="50dip"  
        android:maxHeight="50dip" android:layout_width="wrap_content"  
        android:layout_height="wrap_content" />  
    <Button android:id="@+id/btn_01" android:layout_height="50dip"  
            android:text="相册" android:layout_width="150dip"/>  
    <Button android:id="@+id/btn_02" android:layout_height="50dip"  
            android:text="拍照" android:layout_width="150dip"/>  
</LinearLayout>

 

 

转自:http://blog.csdn.net/xys289187120/article/details/6575830

分享到:
评论

相关推荐

    andorid下从相册选取/拍照选取一张相片并剪切

    在Android开发中,用户经常需要从相册...以上就是Android下从相册选取或拍照选取一张相片并进行剪切的主要步骤和涉及的关键知识点。在实际开发中,还需要注意异常处理、用户体验优化以及适配不同Android版本等问题。

    Android中照相,从相册选取照片,android拍照或从相册选择,Java源码.zip

    这个资源包“Android中照相,从相册选取照片,android拍照或从相册选择,Java源码.zip”提供了一些Java源代码,帮助开发者实现这些功能。下面将详细介绍如何在Android应用中集成拍照和从相册选择图片的流程。 1. **...

    android从图片库选取照片或者拍照返回

    在Android开发中,用户经常需要从手机的图片库选择照片或直接通过相机拍摄新照片。这个功能在许多应用中都十分常见,例如社交应用、个人资料设置等。本示例程序"PickPictureDemo"旨在演示如何实现这一功能,并对选取...

    从系统中选取照片(相机或者相册)

    在Android开发中,允许用户从系统中选取照片或者直接通过相机拍摄新照片是一项常见的功能。这一功能涉及到Android的多媒体访问、权限管理以及图片处理等多个方面。以下将详细讲解实现这一功能所需的知识点。 1. **...

    拍照与相册选取

    在Android系统中,"拍照与相册选取"是常见的用户交互功能,允许用户通过相机拍摄新照片或从现有的相册中选择图片。随着Android版本的更新,尤其是从Android 6.0(Marshmallow)开始,引入了运行时权限管理机制,使得...

    实现拍照,从图库中选择照片并且进行图片剪裁

    在移动应用开发中,"实现拍照,从图库中选择照片并且进行图片剪裁"是一项基本且重要的功能,尤其在社交、生活服务类应用中尤为常见。本示例项目"PhotoDemo"旨在提供一个可以直接使用的解决方案,帮助开发者快速集成...

    h5app拍照或者图库选择图片限制图片数量demo

    【标题】"h5app拍照或者图库选择图片限制图片数量demo"涉及到的是在H5应用程序中实现用户通过拍照或从图库选取图片,并且对选取的图片数量进行限制的功能。这一功能通常用于提高用户体验,避免一次性上传过多图片...

    朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)

    在微信朋友圈发布动态的过程中,涉及到一系列的技术点,包括图片拍摄、图库选择、照片压缩、显示、保存、生成缩略图以及相应的用户交互功能。以下将详细解释这些关键环节: 1. **拍照与图库选择**: - 拍照功能:...

    拍照或者本地选取图片

    在移动应用开发中,"拍照或者本地选取图片"是一个常见的功能需求,允许用户通过相机拍摄新照片或从设备的图库中选择已有图片。这个功能广泛应用于社交媒体、文档上传、在线购物等多种场景,极大地提升了用户体验。...

    安卓拍照,选取,裁剪图片

    在Android平台上,拍照、选取和裁剪图片是常见的功能,尤其在移动应用开发中不可或缺。以下将详细解析这个过程,并介绍实现这些功能的关键知识点。 首先,我们从拍照功能开始。在Android中,我们可以使用`Intent`来...

    input type=file 调取手机照相机和选择照片上传

    一旦用户通过照相机拍摄或从图库中选择了一张照片,文件选择器会返回一个FileList对象,包含用户选中的文件。这时,我们可以通过JavaScript监听 `change` 事件来获取用户选择的文件。以下是一个简单的例子: ```...

    Android拍照,相册选取图片后剪切

    在Android平台上,开发一款应用,让用户能够通过拍照或者从相册选取图片,然后进行剪切操作,是一项常见的功能需求。这个过程涉及到多个Android系统服务和API的交互,包括相机服务、图片选择器以及图片处理技术。...

    Android手机拍照或选取图库图片作为头像

    在Android应用开发中,用户经常需要上传个人头像,这通常涉及到从手机摄像头拍照或从图库中选择图片。以下是对这个过程的详细说明: 首先,Android应用需要一个Activity来处理用户交互。`MainActivity`继承自`...

    android圆形头像拍照相册选取上传

    在Android开发中,创建一个应用来实现用户选择头像,无论是通过相册选取还是拍照,然后进行圆形裁剪并上传,是一项常见的需求。这个过程涉及到了多个关键的技术点,包括图片选择、图片处理以及网络上传等。下面我们...

    Android 拍照上传和拍照本地显示,拍照剪切上传,选取本地图片剪切上传

    - 使用`Intent.ACTION_PICK`创建一个Intent,让用户从图库中选择图片。 - 图片选择后,通过`onActivityResult()`方法获取选中的图片Uri。 - 解析Uri得到Bitmap,并使用裁剪库进行裁剪。 - 与拍照剪切类似,裁剪...

    Android-photopicher-仿照微信拍照和选取图片

    在Android应用开发中,"Android-photopicher-仿照微信拍照和选取图片"是一个常见的需求,主要用于实现用户从相册选择图片或者直接通过相机拍摄照片的功能。这个项目旨在模仿微信的图片选择流程,提供一个流畅且用户...

    选择本地图片和照相

    在移动应用开发中,"选择本地图片和照相"是一个常见的功能需求,它涉及到用户能够从设备的图库中选取照片或直接通过相机拍摄新图片。这个功能在各种类型的App中都有广泛的应用,如社交应用、图像编辑工具、电商应用...

    Android拍照剪裁示例代码

    第一步,相机拍照或者从图库选取照片,产生一个照片,第二步,提供头像剪裁,一般是剪裁为方形的。第三步,上传头像,删除不必要的缓存文件。 拍照和图库选择照片都可以使用系统的方案。自制相机可以搞滤镜,这个...

    IOS 选择图片和拍照

    iOS系统提供了`UIImagePickerController`类,它是用于让用户在应用中选取现有图片或拍摄新照片的主要工具。通过实例化一个`UIImagePickerController`对象,设置其`sourceType`属性,可以决定是从相册选择图片还是...

    Xamarin Froms 调用相机拍照和图库选择图片

    本教程将深入探讨如何在 Xamarin.Forms 应用中调用设备的相机进行拍照以及访问图库选择图片。 首先,我们需要了解 Xamarin.Forms 的页面导航系统。在 Xamarin.Forms 中,我们通常使用 `ContentPage` 作为应用的基本...

Global site tag (gtag.js) - Google Analytics