如何在抖动中将图像文件转换为资产图像?

时间:2020-09-29 16:12:27

标签: flutter dart

我正在使用 image_picker image_cropper 插件在相机和图片库的帮助下选择或捕获图像。我从 image_picker 获得了一个图像文件。现在,我正在使用 Image.asset()小部件 Circle Avatar 中显示图像。谁能告诉我如何将图像文件转换为资产图像?

我的代码:

//Function that decides if image is returned or not(If not, then it will show the default circle avator)
File getImageWidget() {
    if (_selectedImage != null) {
      return _selectedImage;
    } else {
      return null;
    }
  }

//Function to set the image in the circle avatar
circleAva(){
return profileIconSelector(
   setProfileIconHighQuality(getImageWidget() ?? userDetails.profile_pic,
       userDetails.loginInitFrom),
       userDetails.name,
       SizeConfig.heightMultiplier * 5);
}

//Function to get image from Camera or Gallery
getImage(ImageSource source) async {
    this.setState((){
      _inProcess = true;
    });
    File image = await ImagePicker.pickImage(source: source);
    if(image != null){
      File cropped = await ImageCropper.cropImage(
          sourcePath: image.path,
          aspectRatio: CropAspectRatio(
              ratioX: 1, ratioY: 1),
          compressQuality: 100,
          maxWidth: 700,
          maxHeight: 700,
          compressFormat: ImageCompressFormat.jpg,
          androidUiSettings: AndroidUiSettings(
            toolbarColor: Colors.deepOrange,
            toolbarTitle: "Cropper",
            statusBarColor: Colors.deepOrange.shade900,
            backgroundColor: Colors.white,
          )
      );

      this.setState((){
        _selectedImage = cropped;
        _inProcess = false;
      });
    } else {
      this.setState((){
        _inProcess = false;
      });
    }
  }

2 个答案:

答案 0 :(得分:1)

您无法从应用中添加资产图片。资产图像是您手动添加到项目中的图像,但是可以在选择图像后将其保存到路径,然后使用Image.file(File.fromUri(Uri.file(IMAGE_PATH)))

答案 1 :(得分:0)

幸运的是,我自己找到了解决方案。

对于 Image.file()小部件,我们必须提供 File 类型的图像。 并且,对于 AssetImage() Image.asset()小部件,我们需要传递 String 类型的图像路径。

因此在 AssetImage()中使用文件类型图像的解决方案或 Image.asset()小部件:

File _selectedImage = fetchedFromCameraOrGallery;

getImageWidget() {
    if (_selectedImage != null) {
      return CircleAvatar(
        radius: SizeConfig.heightMultiplier * 5,
        backgroundImage: AssetImage(
          _selectedImage.path,   //Convert File type of image to asset image path
        ),
      );
    } 
}

我们只需使用 _selectedImage.path 即可将 File 类型的图像文件转换为有效的Asset图像路径格式。