Android:MediaStore.Images.Media.EXTERNAL_CONTENT_URI ...以完整尺寸显示图片?

时间:2010-08-09 19:06:31

标签: android

我想之前已经问过这个问题,但我似乎无法找到合适的答案/解决方案。

有一个笔记记录应用程序,可以拍照。为此,我开始一个意图,启动内置的相机应用程序。到目前为止一切都很好。

但是当我在我的应用程序中显示该图像时,它的格式要小得多:(

有趣/奇怪的是,相机应用程序确实拍摄了全分辨率照片!但由于某种原因,我无法在我的应用程序中显示完整版本???

所以,当我使用标准Android Gallery应用程序并转到该图片时,非常明显的是它的全尺寸(我可以放大并查看我放大时无法看到的细节,我自己应用程序)。此外,尺寸实际上是使用500万像素摄像头拍摄的原始照片的尺寸。

在我的应用中,它们非常小。我的手机有Android 2.2,但在我的模拟器(Android 2.1)上也是如此。

我应该如何在我的应用程序中检索图片?尝试了几种方法,但没有一种方法:(不需要一个完整的例子(尽管非常受欢迎),只有一些线索足以搜索我自己。

提前Tx !!

Greetingz, 公园<

1 个答案:

答案 0 :(得分:0)

非常奇怪,我通过查看在我自己的数据库中插入的_ID值找到了解决方案/答案。首先我注意到当我选择现有图像时(通过内置Android图库),我确实得到了完整尺寸的图像。

当我第一次拍照时,我得到了一张缩放图像。那么区别在哪里。显然在图片的_ID存储在我的数据库中的位置。在我的情况下,可能大多数情况下,这发生在onActivityResult过程中。

首先看看我最初的情况:

if(requestCode == REQUEST_CAMERA && resultCode == RESULT_OK){
        String timestamp = Long.toString(System.currentTimeMillis());

        // get the picture
        mPicture = (Bitmap)result.getExtras().get("data");

        //save image to gallery
        String pictureUrl = MediaStore.Images.Media.insertImage(getContentResolver(), mPicture, getResources().getString(R.string.app_name_short), timestamp);
        insertPictureAttachment(mRowId.intValue(), Integer.parseInt(Uri.parse(pictureUrl).getLastPathSegment()));

“insertPictureAttachment”-method实际插入数据库。

向后看,无论如何这有点奇怪...制作一张图片,所以我可以创建它的URI,然后获取最后一个路径段(这是_ID),所以我可以将它插入到我的数据库中

最终,事实证明我可以用一行替换上面的代码:

insertPictureAttachment(mRowId.intValue(), Integer.parseInt(result.getData().getLastPathSegment()));

更短,实际上更有意义...而不是从result.getExtras()。get(“data”)获取信息,我从result.getData()获取我的信息,它给出了_ID的原始的全尺寸图片。

我会对此做一些进一步的研究,因为我不清楚为什么我实际上不必调用MediaStore.Images.Media.insertImage(...)...也许我将不得不如果我想要特定的功能(如自定义文件位置或类似的东西)。

Greetingz, 公园<