从相机拍摄和从相册读取图片,以及对图片的压缩的完全解决方案

本文提供从相机拍摄和相册选择图片的Android解决方案,并介绍如何压缩和调整图片尺寸。针对三星手机屏幕旋转问题,提出将照片保存到特定位置后再压缩的策略。此外,分享了在Activity重建时保存数据的技巧,以及图片压缩的实现,适用于多图上传场景。代码已实际测试,安全可靠。
摘要由CSDN通过智能技术生成
这段时间因为项目需求,需要大批量的图片,而且很多内容都是需要图片来突出内容,所以对调用Android的相机和相册做了研究。
在目前百度上所搜索到的解决方法中,都没有一个完整的解决方案,也就产生了自己写一个的想法。下面上传代码,以下代码是对所有机型都适配过的,尤其是三星的手机,因为屏幕的反转导致重新加载activity的问题也做了适配。

首先先给出相机和相机相关的代码

public class CameraUtil {
   
    public static final int TYPE_IMAGE_1 = 1;
    public static final int TYPE_IMAGE_2 = 2;
    public static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
    public static final int PICK_IMAGE_ACTIVITY_REQUEST_CODE = 200;
    public static String imageName="cameraImg.jpg";
    public static final String SDPATH = Environment.getExternalStorageDirectory()
            + "/junyou_catche/";
    /**
     * 打开相机
     * */
    public static void openCamrea(Activity activity){
        String sdStatus = Environment.getExternalStorageState();
        /* 检测sd是否可用 */
        if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
            Toast.makeText(activity, "SD卡不可用!", Toast.LENGTH_SHORT).show();
            return;
        }

        Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        Uri mUri= Uri.fromFile(new File(SDPATH, imageName));
        openCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
        activity.startActivityForResult(openCameraIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
    }
    /**
     * 得到相机图片存放到SaveImageItemFile.imageitem1中
     * */
    public static void getCamreaImage(int type,ImageView imageView){
        Bitmap cameraBitmap = null;
        ImageItem takePhoto = new ImageItem();
        cameraBitmap=SaveImageItemFile.getSDPicture(CameraUtil.SDPATH+CameraUtil.imageName);
        cameraBitmap=SaveImageItemFile.imageZoom(cameraBitmap);
        PictureUtils.addSDPicture(cameraBitmap, CameraUtil.SDPATH+CameraUtil.imageName);
        takePhoto.setBitmap(cameraBitmap);
        takePhoto.setImagePath(CameraUtil.SDPATH+CameraUtil.imageName);
        switch(type){
        case TYPE_IMAGE_1:
            SaveImageItemFile.imageitem1 = takePhoto;
            SaveImageItemFile.type1=1;
            if(imageView!=null){
                imageView.setImageBitmap(SaveImageItemFile.imageitem1.g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值