首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在颤振中显示方形字串图像。我的程序在颤振中出现了“无效图像数据”错误

如何在颤振中显示方形字串图像。我的程序在颤振中出现了“无效图像数据”错误
EN

Stack Overflow用户
提问于 2022-05-10 03:59:25
回答 1查看 94关注 0票数 0

我使用SQLite在本地存储数据。将图像作为字符串插入,并让它们在这里显示发生_Exception (异常:无效图像数据)的错误。

编码图像代码:

代码语言:javascript
复制
final image = await ImagePicker().pickImage(source: source);
if (image == null) return;
final imagePermanent = File(image.path);
setState(() => _image = imagePermanent);
imageData = base64Encode(_image!.readAsBytesSync());
print(imageData);
return imageData;}

显示页中的解码图像:

代码语言:javascript
复制
showImage(String image) {
    return Image.memory(base64Decode (image) );
}

以代码显示:

代码语言:javascript
复制
showImage(widget.euser.image.toString()),

错误显示:

代码语言:javascript
复制
Exception has occurred._Exception (Exception: **Invalid image data**)

控制台日志显示如下所示:

代码语言:javascript
复制
E/FlutterJNI(30407): Failed to decode image  
E/FlutterJNI(30407): android.graphics.ImageDecoder$DecodeException:  
  Failed to create image decoder with message 'unimplemented'Input contained an error.
E/FlutterJNI(30407):    
  at android.graphics.ImageDecoder.nCreate(Native Method)
E/FlutterJNI(30407):    
  at android.graphics.ImageDecoder.access$200(ImageDecoder.java:173)
E/FlutterJNI(30407):    
  at android.graphics.ImageDecoder$ByteBufferSource.createImageDecoder(ImageDecoder.java:250)
E/FlutterJNI(30407):    
  at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1862)
E/FlutterJNI(30407):    
  at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1855)
E/FlutterJNI(30407):    
  at io.flutter.embedding.engine.FlutterJNI.decodeImage(FlutterJNI.java:514)

错误图像:

在这里输入图像描述

EN

回答 1

Stack Overflow用户

发布于 2022-05-10 04:25:44

我强烈建议您不要使用SQlite保存映像,因为它不是为存储如此长的字符串而创建的(它不像以前那样健壮,设计用于存储小值)。虽然如果要在应用程序中存储图像,可以使用以下代码将其存储在外部存储的数据目录中

代码语言:javascript
复制
/storage/emulated/0/Android/data/com.example.yourflutterapp/files/imagepermanat.png

您可以使用以下函数:

代码语言:javascript
复制
Future<File?> captureAndSaveImage() async {
final pickedImage = await ImagePicker().getImage(source: 
ImageSource.camera);
if (pickedImage == null) return null;

try {
final directory = await getExternalStorageDirectory();
if (directory != null) return 
File(pickedImage.path).copy('${directory.path}/name.png');
 } catch (e) {
return null;
 }
}

此函数可称为:

代码语言:javascript
复制
File? file = await captureAndSaveImage();

您仍然可以使用SQlite存储您保存的图像的路径()

此外,如果将转换为网络映像,在代码中进一步使用 cachedImageNetwork 即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72180594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档