package douban.day05.loudimager;
import douban.day05.loudimager.utils.ThumbnailUtilsWrapper;
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.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
/**
* 需求: 用户从图库中加载一张图片进来
*
* @author zxc
*
*/
public class LoudImagerActivity extends Activity implements OnClickListener {
private Button bt_1;
private Button bt_2;
private ImageView iv;
private Button bt_3;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bt_1 = (Button) this.findViewById(R.id.bt_1);
bt_2 = (Button) this.findViewById(R.id.bt_2);
bt_3 = (Button) this.findViewById(R.id.bt_3);
iv = (ImageView) this.findViewById(R.id.iv);
bt_1.setOnClickListener(this);
bt_2.setOnClickListener(this);
bt_3.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
// 从gllay中取出图片
case R.id.bt_1:
/*
* cmp=com.android.gallery/com.android.camera.GalleryPicker
*/
Intent oneIntent = new Intent();
// 这种方式访问必须要在自己程序使用 不可以访问外部程序
// oneIntent.setClassName("com.android.camera",
// "com.android.camera.GalleryPicker ");
/*
* 隐身意图 // 打开系统的图库 获取一个图 <intent-filter> <action
* android:name="android.intent.action.PICK" /> <category
* android:name="android.intent.category.DEFAULT" /> <data
* android:mimeType="image/*" /> <data android:mimeType="video/*" />
* </intent-filter>
*/
oneIntent.setAction("android.intent.action.PICK");
oneIntent.addCategory("android.intent.category.DEFAULT");
oneIntent.setType("image/*");
startActivityForResult(oneIntent, 0);
break;
// 从sd卡路径取出图片
case R.id.bt_2:
BitmapFactory.Options opts = new Options(); // 定义图片的解析的参数对象
opts.inSampleSize = 8; // 按照原图的1/8进行图片的解析
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/img.JPG", opts);
iv.setImageBitmap(bitmap);
break;
//谷歌提供
case R.id.bt_3:
Bitmap bitmap1 = BitmapFactory.decodeFile("/sdcard/img.JPG");
System.out.println("bitmap的高度"+bitmap1.getHeight());
System.out.println("bitmap2的宽度"+bitmap1.getWidth());
Bitmap bitmap2 =ThumbnailUtilsWrapper.extractThumbnail(bitmap1, 2, 2);
System.out.println("bitmap的高度"+bitmap2.getHeight());
System.out.println("bitmap2的宽度"+bitmap2.getWidth());
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (null != data) {
Uri uri = data.getData();
iv.setImageURI(uri);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
![](https://img-my.csdn.net/uploads/201301/27/1359277593_7902.jpg)
package douban.day05.loudimager.utils;
import android.graphics.Bitmap;
/**
* 返回一个缩略图
* @author zxc
*
*/
public class ThumbnailUtilsWrapper {
static {
try {
Class.forName("android.media.ThumbnailUtils");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void checkAvailable() {
}
/**
*
* @param source 图片资源
* @param width 宽度
* @param height 高度
* @return 按照比例的图
*/
public static Bitmap extractThumbnail(final Bitmap source, final int width,
final int height) {
return android.media.ThumbnailUtils.extractThumbnail(source, width,
height, android.media.ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
}
}
ThumbnailUtils是应该是对多媒体的压缩 例如 影视 这个类还不是很清楚是什么意思?