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()信息不足。在这种情况下显示整个语句。我添加了其他信息。我试图避免它,因为我认为它是保存未压缩位图的一种功能,这样信息就不必要了。