android 裁剪图片大小 控制图片尺寸
2014-01-07 15:57
489 查看
用BitmapFactory获取适合屏幕大小的图片 和自带的图片裁剪工具
package com.lin.image;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class ImageScaleActivity extends Activity implements View.OnClickListener{
/** Called when the activity is first created. */
private Button selectImageBtn;
private Button cutImageBtn;
private ImageView imageView;
private static final int IMAGE_SELECT=1;
private static final int IMAGE_CUT=2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
selectImageBtn=(Button)findViewById(R.id.selectImageBtn);
cutImageBtn=(Button)findViewById(R.id.catImageBtn);
imageView=(ImageView)findViewById(R.id.imageView);
cutImageBtn.setOnClickListener(this);
selectImageBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
<span style="white-space:pre"> </span>//截取适合屏幕大小的图片
if(v==selectImageBtn){
Intent intent=new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, IMAGE_SELECT);
}//一般用于头像等需要设置指定大小
else if(v==cutImageBtn){
Intent intent=getImageClipIntent();
startActivityForResult(intent, IMAGE_CUT);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
if(resultCode==RESULT_OK){
if(requestCode==IMAGE_SELECT){
Uri imageFileUri =intent.getData();
int dw=getWindowManager().getDefaultDisplay().getWidth();
int dh=getWindowManager().getDefaultDisplay().getHeight()/2;
//已屏幕宽 和一般的高作为图片显示的最大尺寸
try{
BitmapFactory.Options factory=new BitmapFactory.Options();
factory.inJustDecodeBounds=true; //当为true时 允许查询图片不为 图片像素分配内存
Bitmap bmp=BitmapFactory.decodeStream(getContentResolver()
.openInputStream(imageFileUri),null,factory);
int hRatio=(int)Math.ceil(factory.outHeight/(float)dh); //图片是高度的几倍
int wRatio=(int)Math.ceil(factory.outWidth/(float)dw); //图片是宽度的几倍
System.out.println("hRatio:"+hRatio+" wRatio:"+wRatio);
//缩小到 1/ratio的尺寸和 1/ratio^2的像素
if(hRatio>1||wRatio>1){
if(hRatio>wRatio){
factory.inSampleSize=hRatio;
}
else
factory.inSampleSize=wRatio;
}
factory.inJustDecodeBounds=false;
bmp=BitmapFactory.decodeStream(getContentResolver()
.openInputStream(imageFileUri),null,factory);
imageView.setImageBitmap(bmp);
}catch(Exception ex){
}
}
else if(requestCode==IMAGE_CUT){
Bitmap bmp=intent.getParcelableExtra("data");
imageView.setImageBitmap(bmp);
}
}
}
/**
* 获取剪切后的图片
*/
public static Intent getImageClipIntent() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);//裁剪框比例
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 80);//输出图片大小
intent.putExtra("outputY", 80);
intent.putExtra("return-data", true);
return intent;
}
}
![](http://up.2cto.com/2011/1223/20111223033750889.gif)
package com.lin.image;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class ImageScaleActivity extends Activity implements View.OnClickListener{
/** Called when the activity is first created. */
private Button selectImageBtn;
private Button cutImageBtn;
private ImageView imageView;
private static final int IMAGE_SELECT=1;
private static final int IMAGE_CUT=2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
selectImageBtn=(Button)findViewById(R.id.selectImageBtn);
cutImageBtn=(Button)findViewById(R.id.catImageBtn);
imageView=(ImageView)findViewById(R.id.imageView);
cutImageBtn.setOnClickListener(this);
selectImageBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
<span style="white-space:pre"> </span>//截取适合屏幕大小的图片
if(v==selectImageBtn){
Intent intent=new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, IMAGE_SELECT);
}//一般用于头像等需要设置指定大小
else if(v==cutImageBtn){
Intent intent=getImageClipIntent();
startActivityForResult(intent, IMAGE_CUT);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
// TODO Auto-generated method stub
if(resultCode==RESULT_OK){
if(requestCode==IMAGE_SELECT){
Uri imageFileUri =intent.getData();
int dw=getWindowManager().getDefaultDisplay().getWidth();
int dh=getWindowManager().getDefaultDisplay().getHeight()/2;
//已屏幕宽 和一般的高作为图片显示的最大尺寸
try{
BitmapFactory.Options factory=new BitmapFactory.Options();
factory.inJustDecodeBounds=true; //当为true时 允许查询图片不为 图片像素分配内存
Bitmap bmp=BitmapFactory.decodeStream(getContentResolver()
.openInputStream(imageFileUri),null,factory);
int hRatio=(int)Math.ceil(factory.outHeight/(float)dh); //图片是高度的几倍
int wRatio=(int)Math.ceil(factory.outWidth/(float)dw); //图片是宽度的几倍
System.out.println("hRatio:"+hRatio+" wRatio:"+wRatio);
//缩小到 1/ratio的尺寸和 1/ratio^2的像素
if(hRatio>1||wRatio>1){
if(hRatio>wRatio){
factory.inSampleSize=hRatio;
}
else
factory.inSampleSize=wRatio;
}
factory.inJustDecodeBounds=false;
bmp=BitmapFactory.decodeStream(getContentResolver()
.openInputStream(imageFileUri),null,factory);
imageView.setImageBitmap(bmp);
}catch(Exception ex){
}
}
else if(requestCode==IMAGE_CUT){
Bitmap bmp=intent.getParcelableExtra("data");
imageView.setImageBitmap(bmp);
}
}
}
/**
* 获取剪切后的图片
*/
public static Intent getImageClipIntent() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);//裁剪框比例
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 80);//输出图片大小
intent.putExtra("outputY", 80);
intent.putExtra("return-data", true);
return intent;
}
}
![](http://up.2cto.com/2011/1223/20111223033750889.gif)
![](http://up.2cto.com/2011/1223/20111223033751429.gif)
相关文章推荐
- android 裁剪图片大小 控制图片尺寸
- android 裁剪图片大小 控制图片尺寸 .
- android 裁剪图片大小 控制图片尺寸
- android 裁剪图片大小 控制图片尺寸
- android 计算Bitmap占byte大小,以及Bitmap中像素数的计算,另外再给出一个按尺寸裁剪图片的方法
- Android实现手势控制ImageView图片大小
- android 读取图片尺寸和大小
- android app -- Picasso 二级缓存加载图片,可控制加载图片大小(附小demo)
- 【Android】安卓开发实战之Java代码中控制EditText插入图片的大小
- 关于android控件drawableLeft图片大小控制
- Android拍照、调用系统图库、裁剪图片到指定大小后输出
- Android 获取屏幕尺寸与密度 遇到一个问题,我的地图浮标图片在WVGA手机上正好,在QVGA上就显的太大,所以我要根据屏幕的不同调整浮标的大小使其在QVGA大小合适。有的同事提出了依据
- 根据自己设定的尺寸裁剪图片大小
- Android利用系统Action裁剪图片大小
- UEditor控制上传图片的显示尺寸大小
- java上传图片前预览 控制图片尺寸大小 控制上传格式
- Android拍照、调用系统图库、裁剪图片到指定大小后输出
- Android调用系统图片裁剪限定尺寸及7.0照相问题的解决方法
- js+css完美控制未知尺寸图片大小
- 图片尺寸自动适应div(div控制图片大小自适应)