PHP纯代码剪切图片,系统接口调用-关于调用图库并裁剪图片

一. 实现代码

调用系统相册

代码:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);

intent.setType("image/*");

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 2);

intent.putExtra("aspectY", 1);

intent.putExtra("outputX", 600);

intent.putExtra("outputY", 300);

intent.putExtra("scale", true);

intent.putExtra("return-data", false);

intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

intent.putExtra("noFaceDetection", true); // no face detection

startActivityForResult(intent, CHOOSE_PICTURE);

调用系统裁剪图片

代码:

private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode) {

Intent intent = new Intent("com.android.camera.action.CROP");

intent.setDataAndType(uri, "image/*");

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 2);

intent.putExtra("aspectY", 1);

intent.putExtra("outputX", outputX);

intent.putExtra("outputY", outputY);

intent.putExtra("scale", true);

intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

intent.putExtra("return-data", false);

intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

intent.putExtra("noFaceDetection", true); // no face detection

startActivityForResult(intent, requestCode);

}

处理并显示裁剪后的图片

代码

在onActivityResult处理:

switch (requestCode) {

case CHOOSE_PICTURE:

cropImageUri(imageUri, 800, 400, CROP_PICTURE);

break;

case CROP_PICTURE:

if (imageUri != null) {

Bitmap bitmap = decodeUriAsBitmap(imageUri);

imageView.setImageBitmap(bitmap);

}

break;

default:

break;

}

图片处理代码:

private Bitmap decodeUriAsBitmap(Uri uri) {

Bitmap bitmap = null;

try {

bitmap = BitmapFactory.decodeStream(getContentResolver()

.openInputStream(uri));

} catch (FileNotFoundException e) {

e.printStackTrace();

return null;

}

return bitmap;

}

二.分析说明

关于裁剪的参数说明

SetExtra

DataType

Description

Crop

String

Signals the crop feature

aspectX

int

Aspect Ratio

aspectY

int

Aspect Ratio

outputX

int

Width of output created from this intent

outputY

int

Heigh of output created from this intent

scale

boolean

Should it scale

Return-data

boolean

Return the bitmap with Action=inline-data by using the data.

data

Parcelable

Bitmap to process,you may provide it a bitmap.

circleCrop

String

If this string is not null,it will provide some circular crop.

MediaStore.EXTRA_OUTPUT(“output”)

URI

set this URi to a File.

data和MediaStore.EXTRA_OUTPUT都是可选的传入数据选项,你可以选择设置data为Bitmap,或者将相应的数据与URI关联起来,你也可以选择是否返回数据(return-data: true)。由于android资源限制,在选择返回图片资源时,android会返回一个压缩处理的小图(此为系统控制-大图容易造成内存溢出),如果想要一个高质量的图片,可以如上述代码中,直接返回uri,根据uri创建需要的图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值