需求分析:想从相册中获取某张图片,并对图片进行裁剪,然后保存,并发给好友,或上传到微博;
实现思路:
选择图片,通过系统相册启动Activity去显示图片缩略图,并选择图片;
裁剪图片,通过系统相册处理裁剪的Activity去执行;
实现步骤:
1.选择图片 和如何对图片进行缩放是一样的;
2.裁剪图片 通过调用系统的Activity去裁剪;
关键:
拿到系统应用的源码,查看清单文件,去配置Intent,通过查看对应Activity的源码,看看是如何传递图片给activity,又是如何返回图片;
code:
import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.ImageView;
public class LoadImage2Activity extends Activity {
private ImageView iv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv =(ImageView) findViewById(R.id.iv);
}
//加载
public void loadImage(View view){
long starttime = System.currentTimeMillis();
//Bitmap bitmap =BitmapFactory.decodeFile("/sdcard/img.JPG");
BitmapFactory.Options opts = new Options(); //定义图片的解析的参数对象
opts.inSampleSize = 8; //按照原图的1/8进行图片的解析
//对图片文件进行解码生成位图;也可以通过调用系统的图片浏览应用去获取图片;
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/img.JPG", opts);
long endtime = System.currentTimeMillis();
long time = endtime - starttime;
System.out.println("解析图片花费了:"+time);
iv.setImageBitmap(bitmap);
}
//裁剪
public void cropImage(View view){
Intent intent = new Intent();
Bundle myExtras = new Bundle();
myExtras.putBoolean("return-data", true);
intent.putExtras(myExtras);
//对意图的目的地进行指明;
intent.setAction("com.android.camera.action.CROP");
intent.addCategory("android.intent.category.DEFAULT");
// intent.setData(Uri.fromFile(new File("sdcard/img.JPG")));
// intent.setType("image/*");
//对意图的携带数据进行uri 和 type进行指定;
intent.setDataAndType(Uri.fromFile(new File("sdcard/img.JPG")),"image/*");
startActivityForResult(intent, 0);
}
//返回当前界面时,把“data”对应的Object,强转成Bitemap,并设置到界面上去显示;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data!=null){
Parcelable imagedata = (Parcelable) data.getExtras().get("data");
iv.setImageBitmap((Bitmap) imagedata);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
本文介绍了如何从手机相册中选择一张图片,通过系统提供的活动来显示图片缩略图并选择图片。接着,利用裁剪功能调整图片尺寸,并保存修改后的图片,最后可以通过发送或上传到微博等方式分享给好友。
485

被折叠的 条评论
为什么被折叠?



