Java android不压缩保存位图

Java android不压缩保存位图,java,android,bitmap,Java,Android,Bitmap,我在安卓上工作。我需要保存一个没有质量损失的位图 我使用位图的compress()方法进行了尝试,将质量设置为100。这对我不起作用,位图失去了太多的质量。我已经测试了JPEG和PNG格式 我已经测试过将位图复制到字节缓冲区,然后提取字节[],并使用文件输出流保存它。在这种情况下,我无法显示用这种方式保存的图像,我只看到一个空白页 我的问题是,有没有办法在SD卡中保存位图而不进行压缩 编辑:这里是我代码的一部分 public class MainActivity extends ActionBa

我在安卓上工作。我需要保存一个没有质量损失的位图

我使用位图的
compress()
方法进行了尝试,将质量设置为100。这对我不起作用,位图失去了太多的质量。我已经测试了JPEG和PNG格式

我已经测试过将位图复制到
字节缓冲区
,然后提取
字节[]
,并使用
文件输出流
保存它。在这种情况下,我无法显示用这种方式保存的图像,我只看到一个空白页

我的问题是,有没有办法在SD卡中保存位图而不进行压缩

编辑:这里是我代码的一部分

public class MainActivity extends ActionBarActivity {

    [...]

    @Override
    protected void onActivityResult(int reqCode, int resCode, Intent handler){
        super.onActivityResult(reqCode, resCode, handler);
        if(reqCode == CAPTURE_IDENTIFIER && resCode == Activity.RESULT_OK){
// THis is that I have tested.
//          Object o = handler.getData();
//          Object o2 = handler.getExtras().getParcelable("data");
//          Object o3 = handler.getExtras().get("data");
//          Object o4 = handler.getParcelableExtra("data");
//          
            prepareCapture();
            startActivityForResult(cameraHandler, CAPTURE_IDENTIFIER);
        }
    }



    private void initCamera(){
        cameraHandler = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        cameraHandler.putExtra("return-data", true);
    }

    private void prepareCapture(){
        currentPhotoName = getNextImageIdentifier() + IMG_BASE_NAME;
        File image = new File(capturesFolder, currentPhotoName);
        Uri uriImage = Uri.fromFile(image);
        cameraHandler.putExtra(MediaStore.EXTRA_OUTPUT, uriImage);
    }



}
我检测到的异常是: RuntimeException:传递结果ResultInfo[…]NullPointerException失败

编辑2: 我要做的是:


我必须用相机拍一张照片,然后在保存它之前,我必须对它进行处理。之后,我必须将其保存在SD卡中。但是图像质量非常重要,我不能以低质量保存,或者至少不能太低质量保存。

如果使用图像捕获,则必须设置一个标志,以不返回缩略图

没有看到你的代码,我只能猜测

文件:

文件报价:

如果不存在额外的_输出,则显示小尺寸图像 在额外字段中作为位图对象返回


这是一个非常常见的错误,请澄清是否是其他错误。

我已经阅读了谷歌文档,这是我理解的,但我不确定100%:

从android摄像头获取未压缩图像的唯一方法是将其保存在SD卡中。然后,如果您想使用它,请从SD获取它


实际上,不可能通过使用意图在活动之间传递未压缩的图像,因为意图只能“传输”大小为“小”的对象。

“我需要保存位图而不丢失质量”--PNG是一种无损格式。我已经测试了JPEG和PNG格式(位图.compress的可用格式)质量=100且质量都较低。那么问题不在于压缩,而在于如何创建
位图或如何确定“较低质量”。我使用对象只是为了检查意图是否返回了一些内容。你能开始解释你的代码应该做什么,而不是谈论位图吗。您的代码中没有位图。我没有额外的输出,因为如果我使用它,当我尝试在“onActivityResult”中获取图像时,getData()和getExtra(“data”)都返回null。不,不是两者都返回。仅参数Intent data==null。现在我甚至不能执行getData()或getExtras.GetParcable(“数据”),会发生异常。确实如此。什么样的例外?你为什么漏掉这么重要的信息?。此外,getData()信息不足。在这种情况下显示整个语句。我添加了其他信息。我试图避免它,因为我认为它是保存未压缩位图的一种功能,这样信息就不必要了。