千家信息网

Android如何实现裁剪照片功能

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍Android如何实现裁剪照片功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 从相册选择照片进行裁剪从相册选择照片并裁剪:/*** 从相册选择照片进行裁
千家信息网最后更新 2026年11月02日Android如何实现裁剪照片功能

这篇文章主要介绍Android如何实现裁剪照片功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1. 从相册选择照片进行裁剪
从相册选择照片并裁剪:


/**
* 从相册选择照片进行裁剪
*/
private void cropFromGallery() {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setAction(Intent.ACTION_PICK);//Pick an item from the data
intent.setType("image/*");//从所有图片中进行选择
intent.putExtra("crop", "true");//设置为裁切
intent.putExtra("aspectX", 1);//裁切的宽比例
intent.putExtra("aspectY", 1);//裁切的高比例
intent.putExtra("outputX", 600);//裁切的宽度
intent.putExtra("outputY", 600);//裁切的高度
intent.putExtra("scale", true);//支持缩放
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//将裁切的结果输出到指定的Uri
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//裁切成的图片的格式
intent.putExtra("noFaceDetection", true); // no face detection
startActivityForResult(intent, SELECT_PIC);
}


将裁减好的照片显示在显示在ImagaView上:


case SELECT_PIC:
if (resultCode==RESULT_OK) {
try {
Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().
openInputStream(imageUri));//将imageUri对象的图片加载到内存
imgShow.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;

程序运行效果图:

2. 从相机拍取照片进行裁剪
控制相机拍照并将照片保存到指定位置:


/**
* 从相机拍取照片进行裁剪
*/
private void cropFromTake() {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//设置Action为拍照
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//将拍取的照片保存到指定URI
startActivityForResult(intent, TAKE_PIC);
}

裁剪已经排好的照片并显示在ImageView上:


case TAKE_PIC:
if (resultCode==RESULT_OK) {
cropImageUri(imageUri, 600, 600, CROP_PIC);
}
break;

/**
* 裁剪指定uri对应的照片
* @param imageUri:uri对应的照片
* @param outputX:裁剪宽
* @param outputY:裁剪高
* @param requestCode:请求码
*/
private void cropImageUri(Uri imageUri, int outputX, int outputY, int requestCode){
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(imageUri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", outputX);
intent.putExtra("outputY", outputY);
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); // no face detection
startActivityForResult(intent, requestCode);
}

程序运行效果图:

3.完整项目代码:

package com.jph.cp; import java.io.File;import java.io.FileNotFoundException;import android.support.v7.app.ActionBarActivity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.View;import android.widget.ImageView; /** * 从相册选择照片进行裁剪,从相机拍取照片进行裁剪 * @author JPH * Date:2014.10.09 */public class MainActivity extends ActionBarActivity {    private final static int SELECT_PIC=0x123;     private final static int TAKE_PIC=0x124;     private final static int CROP_PIC=0x125;     private Uri imageUri;    private ImageView imgShow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化imageUri        imageUri=Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "test.jpg"));        imgShow=(ImageView)findViewById(R.id.imgShow);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        switch (requestCode) {        case SELECT_PIC:            if (resultCode==RESULT_OK) {                try {                    Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().                            openInputStream(imageUri));//将imageUri对象的图片加载到内存                    imgShow.setImageBitmap(bitmap);                } catch (FileNotFoundException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            break;        case TAKE_PIC:            if (resultCode==RESULT_OK) {                cropImageUri(imageUri, 600, 600, CROP_PIC);            }            break;        case CROP_PIC:            if (resultCode==RESULT_OK) {                try {                    Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().                            openInputStream(imageUri));//将imageUri对象的图片加载到内存                    imgShow.setImageBitmap(bitmap);                } catch (FileNotFoundException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }            break;        default:            break;        }        super.onActivityResult(requestCode, resultCode, data);    }    /**     * 裁剪指定uri对应的照片     * @param imageUri:uri对应的照片     * @param outputX:裁剪宽     * @param outputY:裁剪高     * @param requestCode:请求码     */    private void cropImageUri(Uri imageUri, int outputX, int outputY, int requestCode){        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(imageUri, "image/*");        intent.putExtra("crop", "true");        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        intent.putExtra("outputX", outputX);        intent.putExtra("outputY", outputY);        intent.putExtra("scale", true);        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);        intent.putExtra("return-data", false);        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());        intent.putExtra("noFaceDetection", true); // no face detection        startActivityForResult(intent, requestCode);    }     public void cropPic(View view) {        switch (view.getId()) {        case R.id.btnCropFromGallery://从相册选择照片进行裁剪            cropFromGallery();            break;        case R.id.btnCropFromTake://从相机拍取照片进行裁剪            cropFromTake();            break;         default:            break;        }    }    /**     * 从相机拍取照片进行裁剪     */    private void cropFromTake() {        // TODO Auto-generated method stub        Intent intent=new Intent();        intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//设置Action为拍照        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//将拍取的照片保存到指定URI        startActivityForResult(intent, TAKE_PIC);    }    /**     * 从相册选择照片进行裁剪     */    private void cropFromGallery() {        // TODO Auto-generated method stub                Intent intent=new Intent();        intent.setAction(Intent.ACTION_PICK);//Pick an item from the data        intent.setType("image/*");//从所有图片中进行选择        intent.putExtra("crop", "true");//设置为裁切        intent.putExtra("aspectX", 1);//裁切的宽比例        intent.putExtra("aspectY", 1);//裁切的高比例        intent.putExtra("outputX", 600);//裁切的宽度        intent.putExtra("outputY", 600);//裁切的高度        intent.putExtra("scale", true);//支持缩放        intent.putExtra("return-data", false);        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//将裁切的结果输出到指定的Uri        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//裁切成的图片的格式        intent.putExtra("noFaceDetection", true); // no face detection        startActivityForResult(intent, SELECT_PIC);        }}

以上是"Android如何实现裁剪照片功能"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

照片 选择 图片 相册 相机 比例 内存 对象 功能 内容 宽度 效果 效果图 格式 程序 篇文章 结果 高度 切成 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 互联网科技社 互联网科技与金融科技 互联网与未来科技 北京互联网络科技有限公司 广州善班互联网科技 国外互联网科技网站 居家互联网科技有限公司 老年人脱离互联网科技的作文 互联网科技有哪些公司 宁夏科技产业互联网案例 荆州市昕露互联网络科技有限公司 阿大互联网科技有限公司 乌苏新华互联网科技做什么的 互联网金融科技名词解释 元气玛特互联网科技公司是外包吗 互联网科技平台产品运营 悟空问答互联网科技 广西泛欧互联网科技有限公司 数字科技和互联网金融哪个好 互联网金融科技 关于新基建和互联网科技 平安科技 互联网 互联网科技ppt模板 沃里互联网科技 哈尔滨秒房互联网科技有限公司 承德科技产业互联网发展 互联网在线教育科技创业 深圳无忧互联网科技 江苏互联网智能科技产品出厂价
0