Android 如何将我从相机获得的位图保存到sd卡而不丢失它';s原版尺寸和质量

Android 如何将我从相机获得的位图保存到sd卡而不丢失它';s原版尺寸和质量,android,Android,如何在失去原始大小或质量的情况下将位图图像保存到SD卡,我目前正在使用此代码,但它保存的图像总是比相机捕获的图像的原始大小小得多 找到了解决办法 在遵循KPBird提供的链接后,我发现问题在于摄影机活动如何返回捕获的位图对象 为了保留内存,相机活动将返回捕获照片的缩放图像,因此解决方案是永远不要使用此缩放图像 只需将一个额外的内容传递给摄像机意图,提供保存图像的url,瞧!,捕获的照片保存在您想要的地方,并具有原始比例 代码: 谢谢你,小鸟 访问以下链接 这可能会有所帮助我试过了,这个链接

如何在失去原始大小或质量的情况下将位图图像保存到SD卡,我目前正在使用此代码,但它保存的图像总是比相机捕获的图像的原始大小小得多

找到了解决办法

在遵循KPBird提供的链接后,我发现问题在于摄影机活动如何返回捕获的位图对象

为了保留内存,相机活动将返回捕获照片的缩放图像,因此解决方案是永远不要使用此缩放图像

只需将一个额外的内容传递给摄像机意图,提供保存图像的url,瞧!,捕获的照片保存在您想要的地方,并具有原始比例

代码:

谢谢你,小鸟

访问以下链接


这可能会有所帮助

我试过了,这个链接,它可以添加一个额外的,相机现在正在按它应该的大小保存捕获的图像,但是当我点击相机上的保存按钮后,整个设备冻结了,奇怪,这是一个双重错误吗?额外的是这样添加的:cameraIntent.putExtra(android.provider.MediaStore.EXTRA_输出,Uri.fromFile(新文件(“/sdcard/tmphassamok.jpeg”);

private void SaveImage(Bitmap bitmap, String strType) {
        File sdImageMainDirectory = new File("/sdcard/");
        if (sdImageMainDirectory.exists()) {
            FileOutputStream fileOutputStream = null;
            Date dt = new Date();
            String nameFile = "myImage";
            int quality = 100;

        try {
            String strFullImageName;
            strFullImageName = UserID + "_" + nameFile + ".jpg";
            fileOutputStream = new FileOutputStream(
                    sdImageMainDirectory.toString() + "/"
                            + strFullImageName);
            BufferedOutputStream bos = new BufferedOutputStream(
                    fileOutputStream);
            bitmap.compress(CompressFormat.JPEG, quality, bos);
            bos.flush();
            bos.close();
            UploadImage(bitmap, strFullImageName, strType);
        } catch (FileNotFoundException e) {
            Utilities.LogError(e);
        } catch (IOException e) {
            Utilities.LogError(e);
        } catch (Exception eee) {
            Utilities.LogError(eee);
        }

    } else {
        Utilities.LogError("File not Found");
    }
}


private static final int CAMERA_PIC_REQUEST = 1337;

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

imageNameToUpload =  "myImage.jpeg";

cameraIntent.putExtra( android.provider.MediaStore.EXTRA_OUTPUT,        Uri.fromFile(new File(                  imagePathToUpload+imageNameToUpload)));
                                startActivityForResult(cameraIntent,
                                        CAMERA_PIC_REQUEST);