繁体   English   中英

Android:MediaStore.Images.Media.EXTERNAL_CONTENT_URI…以全尺寸显示图片吗?

[英]Android: MediaStore.Images.Media.EXTERNAL_CONTENT_URI … show pictures in full size?

我想这个问题以前曾被问过,但我似乎找不到合适的答案/解决方案。

有一个记笔记的应用程序,可以拍照。 为此,我启动了一个意图,即启动了内置的camera-app。 到现在为止还挺好。

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

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

因此,当我使用标准的Android Gallery应用程序并转到该图片时,很明显它是完整尺寸的(我可以在自己的应用程序中放大并查看我放大时实际上看不到的细节)。 另外,尺寸实际上是使用5MP相机拍摄的原始尺寸。

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

我应该如何在我的应用程序中检索图片??? 尝试了几种方法,但没有用:(不需要完整的示例(尽管这很受欢迎),仅需提供一些线索即可进行自我搜索。

提前发送!

科恩Greetingz <

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

当我第一次拍照时,我得到了缩放的图像。 那么区别在哪里。 大约在图片的_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”方法将实际插入数据库。

向后看,无论如何还是有点奇怪的……制作一张图片,所以我可以为其制作一个URI,然后获取最后一个路径段(即_ID),因此可以将其插入数据库中。

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

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

更短,而且实际上更有意义...而不是从result.getExtras()。get(“ data”)获取信息,我从result.getData()获取我的信息,该信息提供了完整的原始_ID尺寸的图像。

不过,我将对此做一些进一步的研究,因为目前尚不清楚为什么我实际上不必调用MediaStore.Images.Media.insertImage(...)...如果我想具体说明,也许我必须这样做功能(例如自定义文件位置等)。

科恩Greetingz <

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM