Dan*_*Dan 5 java android bitmap
我正在开发安卓系统。我需要保存位图而不丢失质量。
我尝试过使用compress()位图方法,将质量设置为 100。这对我不起作用,位图损失了太多质量。我已经用 JPEG 和 PNG 格式进行了测试。
我已经测试过将位图复制到 a ByteBuffer,然后提取byte[]并使用FileOutputStream. 在这种情况下,我无法显示使用这种方式保存的图像,我只能看到一个空白页面。
我的问题是,有什么方法可以在不压缩的情况下将位图保存在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);
}
}
Run Code Online (Sandbox Code Playgroud)
我检测到的异常是: RuntimeException:传递结果失败 ResultInfo [...] NullPointerException
EDIT2:我实际上必须做的事情:
我必须用相机拍照,然后在保存之前,我必须对其进行处理。之后,我必须将其保存在SD卡中。但图像质量非常重要,我不能以低质量保存它,或者至少不能太低质量。
我已经阅读了谷歌文档,这是我所理解的,但我不确定100%:
从 Android 相机获取未压缩图像的唯一方法是将其保存在 SD 卡中。然后,如果您想使用它,请从 SD 获取它。
事实上,由于意图只能“传输”“小”尺寸的对象,因此不可能通过使用意图在活动之间传递未压缩的图像。
| 归档时间: |
|
| 查看次数: |
6144 次 |
| 最近记录: |