从android系统图库中提取图片的代码
http://marshal.easymorse.com/archives/2971
在自己的应用程序中,从系统图库中获取图片,然后截取其中一部分,然后返回到自己的应用程序中。这是许多图片应用程序所需的功能。
写一个例子,是一个大按钮,甚至不需要布局。最后,选择图片的一部分作为按钮的背景。
代码贴在下面:
package com.easymorse.gallery;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class GalleryActivity extends Activity { private static int SELECT_PICTURE; private File tempFile; Button button; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.tempFile=new File("/sdcard/a.jpg"); button = new Button(this); button.setText(“获取图片”; button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); intent.putExtra("crop", "true"); // intent.putExtra("aspectX", 1); // intent.putExtra("aspectY", 2); intent.putExtra("output", Uri.fromFile(tempFile)); intent.putExtra("outputFormat", "JPEG"); startActivityForResult(Intent.createChooser(intent, “选图”), SELECT_PICTURE); } }); setContentView(button); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_PICTURE) { button.setBackgroundDrawable(Drawable.createFromPath(tempFile .getAbsolutePath())); } } }}
这里需要注意几点:
- 从图库中选择保存的图片编辑需要保存在sd卡目录中,而不是应用程序自己的内存目录,因为它是一个系统图库来保存文件,它没有访问您的应用程序的权限;
- intent.putExtra("crop", "true“)可以制作小的编辑方框,否则没有编辑功能,只能选择图片;
- intent.putExtra("aspectX", 1)是编辑方框的比例,可用于强制图像的长宽比。
