`

调用照相机和相册

 
阅读更多
直接下代码看吧。。

public class testCarema extends Activity
{
	/** Called when the activity is first created. */
	private ImageView imageView;
	private OnClickListener imgViewListener;
	private Bitmap myBitmap;
	private byte[] mContent;

	@ Override
	public void onCreate ( Bundle savedInstanceState )
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		imageView = (ImageView) findViewById(R.id.imageView);
		imgViewListener = new OnClickListener()
		{
			public void onClick ( View v )
			{
				final CharSequence[] items =
				{ "相册", "拍照" };
				AlertDialog dlg = new AlertDialog.Builder(testCarema.this).setTitle("选择图片").setItems(items,
						new DialogInterface.OnClickListener()
						{
							public void onClick ( DialogInterface dialog , int item )
							{
								// 这里item是根据选择的方式,
								// 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
								if (item == 1)
								{
									Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
									startActivityForResult(getImageByCamera, 1);
								} else
								{
									Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
									getImage.addCategory(Intent.CATEGORY_OPENABLE);
									getImage.setType("image/jpeg");
									startActivityForResult(getImage, 0);
								}
							}
						}).create();
				dlg.show();
			}
		};
		// 给imageView控件绑定点点击监听器
		imageView.setOnClickListener(imgViewListener);

	}

	@ Override
	protected void onActivityResult ( int requestCode , int resultCode , Intent data )
	{
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);

		ContentResolver resolver = getContentResolver();
		/**
		 * 因为两种方式都用到了startActivityForResult方法,
		 * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,
		 * 这里的requestCode跟startActivityForResult里面第二个参数对应
		 */
		if (requestCode == 0)
		{
			try
			{
				// 获得图片的uri
				Uri originalUri = data.getData();
				// 将图片内容解析成字节数组
				mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));
				// 将字节数组转换为ImageView可调用的Bitmap对象
				myBitmap = getPicFromBytes(mContent, null);
				// //把得到的图片绑定在控件上显示
				imageView.setImageBitmap(myBitmap);
			} catch ( Exception e )
			{
				System.out.println(e.getMessage());
			}

		} else if (requestCode == 1)
		{
			try
			{
				super.onActivityResult(requestCode, resultCode, data);
				Bundle extras = data.getExtras();
				myBitmap = (Bitmap) extras.get("data");
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
				mContent = baos.toByteArray();
			} catch ( Exception e )
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// 把得到的图片绑定在控件上显示
			imageView.setImageBitmap(myBitmap);
		}
	}

	public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts )
	{
		if (bytes != null)
			if (opts != null)
				return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts);
			else
				return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
		return null;
	}

	public static byte[] readStream ( InputStream inStream ) throws Exception
	{
		byte[] buffer = new byte[1024];
		int len = -1;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while ((len = inStream.read(buffer)) != -1)
		{
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();
		outStream.close();
		inStream.close();
		return data;

	}

}


 通过相册拿到图片路径等信息
        Uri uri = data.getData();
        Cursor cursor = getContentResolver().query(uri, null, null, null, null);
        cursor.moveToFirst();
        String imgNo = cursor.getString(0); //图片编号
        String imgPath = cursor.getString(1); //图片文件路径
        String imgSize = cursor.getString(2); //图片大小
        String imgName = cursor.getString(3); //图片文件名


第二个包是对照片进行剪裁等操作
分享到:
评论

相关推荐

    Android 调用系统照相机,相册,上传图片

    在Android开发中,调用系统照相机、相册以及上传图片是常见的功能需求,尤其在社交应用、生活服务类应用中十分常见。本教程将详细讲解如何实现这些功能。 一、调用系统照相机 1. 添加权限:首先在AndroidManifest....

    Android代码-调用系统相册和系统照相机功能雨实例源码.zip

    在Android开发中,调用系统相册和相机是常见的用户交互功能,这使得用户能够方便地选择或拍摄图片,进一步丰富应用的体验。本实例源码提供了如何在Android应用程序中实现这两个功能的具体方法。 首先,调用系统相册...

    delphi xe5 android 调用照相机获取拍的照片

    Delphi XE5 Android 调用照相机获取拍的照片 Delphi XE5 是一款功能强大且流行的开发环境,它提供了许多优秀的功能,包括对 Android 平台的支持。在 Android 平台上,Delphi XE5 提供了许多有用的组件和 API,允许...

    android调用照相机拍照与选择本地照片功能

    在Android应用开发中,提供用户调用照相机拍照和选择本地照片是常见的功能。这两个功能的实现涉及到Android系统的相机API、文件系统管理以及权限控制等多个方面。以下将详细阐述这些知识点。 1. 调用照相机拍照: ...

    Qt调用原生安卓照相机

    在调用照相机功能时,我们将创建一个Java层的接口,然后在Qt的C++或QML部分通过JNI调用这个接口。 1. **创建Java层接口**: 在Android项目的`src/main/java`目录下,创建一个新的Java类,比如`...

    调用系统相册和系统照相机功能雨实例源码.rar

    而`调用系统相册和系统照相机功能雨实例源码`文件则包含了具体的Java或Kotlin代码,供开发者研究和学习。 总之,这个实例源码是关于如何在Android应用中调用系统相册和相机功能的实践示例,涵盖了Intent使用、结果...

    Unity3d调用IOS相册,对照片进行剪裁

    以上就是如何在Unity3D 2018.3.0中调用iOS相册并剪裁图片的基本步骤和关键知识点。在实际开发过程中,可能还需要根据具体需求对代码进行调整和优化,确保功能的稳定性和性能。记住,始终要遵循苹果的App Store审核...

    Android 调用系统相册和系统照相机功能雨实例源码.zip

    在Android应用开发中,调用系统相册和相机功能是常见的需求,这使得用户能够方便地选择或拍摄图片,进一步增强应用的交互性。本文将详细介绍如何在Android中实现这两个功能,并提供相应的源码实例。 首先,我们来看...

    Delphi11.3 安卓调用相册,并将图片放入image中CameraRoll.rar

    以上就是使用Delphi 11.3在Android平台上调用相册并显示图片的主要步骤和技术点。通过这个模板,开发者可以快速构建类似功能的应用。同时,记得在实际项目中根据具体需求进行适应性调整和错误处理。

    获取本地照相机 或相册图片Demo

    通过调用本地的相册或相机获取相对应的图片URL 并放入List中备用或上传

    Android源码——调用系统相册和系统照相机功能雨实例源码.zip

    在Android开发中,调用系统相册和相机是常见的功能需求,这有助于用户方便地获取和上传图片。本文将详细解析如何在Android应用中实现这两个功能,并提供相关的源码实例。 首先,调用系统相册的功能是允许用户从手机...

    Android 调用系统相册和系统照相机功能雨实例源码-IT计算机-毕业设计.zip

    在Android应用开发中,调用系统相册和系统照相机是常见的功能,这些功能使得用户可以方便地选择或拍摄图片并应用到应用中。在这个"Android调用系统相册和系统照相机功能实例源码"中,我们可以学习到如何实现这两个...

    Android从照相机和相册中获取图片并且裁剪

    在Android开发中,获取用户设备上的图片以及进行裁剪是一项常见的功能,这通常涉及到相机应用接口的调用和系统相册的访问。本教程将详细讲解如何实现这一过程。 首先,我们要了解Android中的Intent机制,它是应用...

    android调用相机、相册以及截图处理

    综上所述,调用相机、相册和截图是Android应用中常见的功能,涉及到权限管理、Intent启动、图片处理等多个环节。同时,要注意不同Android版本的适配,尤其是Android 7.0及以上版本的文件路径问题。

    Android源码——调用系统相册和系统照相机功能雨实例源码.7z

    这份"Android源码——调用系统相册和系统照相机功能雨实例源码.7z"的资源包含了实现这两个功能的详细示例代码。下面将详细讲解如何在Android应用中实现这些功能。 首先,调用系统相册(选择图片)通常通过Intent来...

    Android 调用系统相册和系统照相机功能雨实例源码.zip项目安卓应用源码下载

    Android 调用系统相册和系统照相机功能雨实例源码.zip项目安卓应用源码下载Android 调用系统相册和系统照相机功能雨实例源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合...

    Android调用系统相册和系统照相机功能雨实例源码.zip

    在Android开发中,调用系统相册和照相机功能是常见的需求,这使得用户能够方便地选择或拍摄图片,进一步增强应用的交互性。本文将详细介绍如何实现这些功能,并提供相应的源码实例。 首先,调用系统相册的步骤如下...

    安卓Android源码——调用系统相册和系统照相机功能雨实例源码.zip

    在安卓(Android)开发中,调用系统相册和照相机功能是常见的需求,这能够增强应用程序的用户体验,让用户能够方便地选择或拍摄图片。这个压缩包提供的源码实例将帮助开发者了解如何实现这两个功能。 首先,让我们...

Global site tag (gtag.js) - Google Analytics