我的应用程序调用画廊的意图如下:
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, SELECT_IMAGE_FROM_GALLERY);
在版本<3.0中没有问题。
在3.0和更高版本中,当您获得一个本地映像时,onActivityResult方法中的意图包含一个Uri(如...
content://media/external/images/media/XXX
但是当您选择一个picasa图像时,uri类似于...
content://com.google.android.gallery3d.provider/picasa/item/XXXXXXXXXXXXXXXXXXXXX
我读了很多关于这个问题的文章,也试过很多变通方法。
目前,我可以使用以下方法获得刚缓存的图像:
getContentprovider().openInputStream(uri)
任何人都知道如何获得文件或网址下载文件或什么东西获得图像??
谢谢!!
正确的解决方案是使用action_get_content。它的名字听起来可能不像ACTION_PICK那么直观,但它是您应该用来做的事情。
使用action_get_content
在库中选择图像,而不是使用action_pick
并指向ImageStore的URI提供程序,其背后的原因是,action_get_content
受到很好的支持,而action_pick
不受支持。Android框架工程师已经提到过几次了。
我很难学到的。在发现这一点之前,我必须处理各种不一致的地方。
与此有关的注释
您应该始终使用OpenInputStream
通过接收到URI
的ContentResolver
来获取文件,而不是尝试获取存储文件的实际路径。很可能的情况是,ContentProvider
实现是由云服务支持的(Picasa就是这种情况),或者实现细节会随着时间的推移而改变。
Android的内容提供商可以让你抽象数据是如何被访问的。试图找出文件的位置是我看到的一个常见错误。通常建议的是通过查询给定URI
的data
列来查找位置。根据使用的contentprovider
,它可能返回不同的内容,甚至随着时间的推移会随着新版本发生变化。
通过使用openinputstream
,您不必关心文件在哪里,只需接收字节流并对其执行您希望的操作。这样你就不会有问题支持其他应用程序的内容提供者,比如Google Drive,Dropbox等,这些应用程序提供了类似的选择器界面来选择图像。
我知道OP使用的是openinputstream
,但其他的答案是相反的,这是我经常看到的。
当一张新照片添加到应用程序的照片“集合”中时,就会调用该方法。当已知是本地图像时(即:如果照片是从应用程序内部拍摄的,或者OnActivityResult的数据参数为空),则本地参数设置为true,我尝试从媒体内容提供商获取content://uri,以便获得有效的图像id传递给Thumbnails.getThumbnail。该代码对于从相机应用程序(通过startActivityForResul
问题内容: 如何在MySQL中插入图像,然后使用PHP检索图像? 我在这两个领域的经验都很有限,我可以使用一些代码让我着手解决这个问题。 问题答案: 首先,您创建一个MySQL表来存储图像,例如: 然后,您可以将图像写入数据库,如下所示: 您可以使用以下方法在网页中显示数据库中的图像:
互联网日安! 我正在尝试从mysql数据库检索并显示一个图像到一个图像视图(android)中。图像是blob类型。我有以下php代码从MySQL获取图像。 下面是使用JSON的android代码。 提前感谢您的帮助!
问题内容: 如何在SQLite中存储和获取图像以及以什么格式保存图像?如果用一个例子来解释会更有用。 问题答案: 图像本身无法存储到数据库列中,但是您可以先将其转换为字符串,然后再存储。该字符串称为base64字符串。据我所知,任何图像都可以转换为相反的图像。 编码为基数64: 现在,您的UIImage对象将转换为String!将strBase64保存到SQLite DB。记住要用作列类型,因为此
最近,我一直试图在Java中缩放像素数组(INT[])。我使用。setrgb()将我所有的像素数据添加到BufferedImage中。然后,BufferedImage提供了一个名为.getScaledInstance()的函数。这对我来说应该很有效,但我遇到了一个问题。.getScaledInstance()返回图像,而不是BufferedImage。对于Image对象,我不能使用.getrgb(
我正在尝试从Google+同步照片的一个文件夹中的gallery应用程序获取图像。选择映像后,Uri将被正确地传回。但是当我试图在存储设备上获取那个图像的实际路径,以便我可以使用它时,它崩溃了。问题似乎特别出在picasa内容提供商身上。 在Nexus S和Nexus 7以及其他设备上进行了测试。 在这里,dat字段似乎正确地传递了Uri,但当我试图获取图像的位置时,它崩溃了,出现以下错误。 Pi