代码完美的作品,但我有问题的权限拒绝,但我已经把READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限Android清单任何想法。已经尝试过这个无法解码流:java.io.FileNotFoundExc0019(权限被拒绝)
位图工厂﹕ 无法解码流-空
E/BitmapFactory:无法解码流:java.io.FileNotFoundException:/storage/emulated/0/DCIM/Camera/IMG_20201001_125759.jpg(权限被拒绝)
Androidanifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
主要活动
//Open phone gallery
private void getImageFromGallery(){
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, GALLERY_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Check if the intent was to pick image, was successful and an image was picked
if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
ImageView imageView = (ImageView) findViewById(R.id.the_grid_image_preview);
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
如果您使用的是Android 6.0版或更高版本,则需要在运行时请求权限:
https://developer.android.com/training/permissions/requesting
为此,我使用了一个叫做Dexter的不错的包装器,它简化了它,并且非常容易使用。
然后,您可以在片段中编写此函数:
private fun checkFilePermissions(onPermissionGranted: () -> Unit) {
Dexter.withActivity(activity)
.withPermissions(
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
)
.withListener(object : BaseMultiplePermissionsListener() {
override fun onPermissionsChecked(response: MultiplePermissionsReport) {
if (response.areAllPermissionsGranted()) {
onPermissionGranted()
}
}
})
.check()
}
在调用方法getImageFromGallery()
时,只需像这样调用它:
...
checkFilePermissions {
getImageFromGallery()
}
我想下载一个JS中的图像,它是bas64编码的。为此,我首先解码了图像并尝试下载它。文件正在下载,但下载文件中的内容什么都不是。 编码后的图像就像: data: Image/png; bas64, iVBORw0KGgoAAAANSUhEUGAAAAUAAAFCAYAAACNbyblAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAABJ
问题内容: 我正在使用SQLite,但无法将图像保存到数据库。这是我的代码: 这是我得到的错误: 我正在使用以下jar:sqlitejdbc-v056.jar。 有任何想法吗?谢谢 问题答案: 您正在使用的SQLite JDBC实现未实现(因此,确切 的说法是SQLite JDBC驱动程序未实现 错误消息)。 您需要改用该方法。
问题内容: 嘿,我不确定为什么每次选择图库中的图像时都会出现这种情况吗? 这是代码: 错误: 问题答案: 不要假设有文件路径。Android 4.4及更高版本即将删除它们。而且您获得的uri已经没有路径。 您仍然可以通过()或文件描述符访问文件内容。 在这里进行了解释:ContentProviders:打开一个文档(向下滚动,指向该节的链接似乎已损坏) 而且确实适用于较旧的android版本。
HTML and CSS allows you to embed external resources right into base using data:URL scheme. Usually, image conversion to base64 is done with external on-line services or third-party assets builder. HTM
我使用下面的脚本从MongoDB中获取JSON文件,对其进行解析,然后将其插入到Oracle表中。 > 该脚本可以正确地将所有值插入到Oracle表中。这包括值Photo,它是一个base64 formate的图像,它比32KB大得多。 表Appery_Photos中的列Photo是CLOB类型,而列DecodedPhoto是BLOB类型。 问题在于行,我用它将CLOB解码为BLOB。函数base