我做了一个 照相功能,跟从相册里面去相片的功能,现在我像不管是照相的还是从相册选择,在imageview里面都是400*400的,如果图片小,就放大,如果图片大就缩小
public Bundle CameraResult(int requestCode, int resultCode, Intent data,ContentResolver resolver) {
/**
* 因为两种方式都用到了startActivityForResult方法, 这个方法执行完后都会执行onActivityResult方法,
* 所以为了区别到底选择了那个方式获取图片要进行判断,
* 这里的requestCode跟startActivityForResult里面第二个参数对应
*/
byte[] mContent=null;
Bitmap myBitmap=null;
if (requestCode == Picther) {
try {
if (data == null) {
return null;
}
// 获得图片的uri
Uri originalUri = data.getData();
// 将图片内容解析成字节数组
mContent = CameraDlg.readStream(resolver.openInputStream(Uri
.parse(originalUri.toString())));
// 将字节数组转换为ImageView可调用的Bitmap对象
myBitmap = CameraDlg.getPicFromBytes(mContent, null);
// //把得到的图片绑定在控件上显示
// CameraImg.setImageBitmap(myBitmap);
Matrix matrix = new Matrix();
matrix.postScale(0.3f, 0.3f);
Bitmap temp = Bitmap
.createBitmap(myBitmap, 0, 0, myBitmap.getWidth(),
myBitmap.getHeight(), matrix, true);
myBitmap = temp;
mContent = CameraDlg.Bitmap2Bytes(myBitmap);
} catch (Exception e) {
System.out.println(e.getMessage());
}
} else if (requestCode == Camera) {
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();
}
}
Bundle bundle = new Bundle();
bundle.putByteArray(getByte, mContent);
bundle.putParcelable(getBitMap, myBitmap);
return bundle;
}
这是我弄的,但是那个缩小成固定的 不会弄,也不知道怎么放大
------解决方案--------------------
Bitmap source = ...;
Bitmap target = Bitmap.createBitmap(400, 400, source.getConfig());
Canvas canvas = new Canvas(target);
canvas.drawBitmap(source, null, new Rect(0, 0, target.getWidth(), target.getHeight()), null);