如何使用 cropImage() 将裁剪后的图像保存到 Flutter 中的特定文件夹
How to save a cropped image with cropImage() to a specific folder in Flutter
我的代码执行以下操作:
- 使用 pickImage() 选择图像(来自 image_picker 包)
- 然后它获取选取的图像并使用 cropImage()(image_cropper 包)
对其进行裁剪
被拾取后,函数pickImage()将其保存在这个路径中:
/data/user/0/com.example.myapp/cache/9930cfca-6eb2.jpg
然后cropImage()函数将返回的图片保存在这里:
/data/user/0/com.example.myapp/cache/image_cropper_1924443.jpg
这是我的函数
Future pickImage(source) async {
try {
final pickedFile = await ImagePicker().pickImage(source: source);
if (pickedFile == null) return;
File? croppedImage = await ImageCropper.cropImage(
sourcePath: pickedFile.path,
aspectRatio: CropAspectRatio(ratioX: 1.0, ratioY: 1.0)
);
if(croppedImage == null) return;
this.image = File(croppedImage.path);
setState((){});
} on PlatformException catch (e) {
print('Failed to catch image: $e');
}
}
现在我要做的是将裁剪后的图像保存到特定的文件夹中。
有什么办法可以实现吗
其中一个解决方案是复制图像,然后 cropImage() 将其存储在其默认目录中:
得到裁剪图像后:
croppedImage = await ImageCropper.cropImage(...);
执行以下操作:
- 使用 path_provider 包获取 phone 磁盘上的应用程序文件夹:
final Directory dir = await getApplicationDocumentsDirectory();
final String appDir = dir.path
- 检查文件是否已经存在,然后删除它。
final File imageFile = File(appDir + '/profile_picture.jpg');
if (await imageFile.exists()) {
imageFile.delete();
}
- 最好清除缓存以避免一些问题:
imageCache!.clearLiveImages();
imageCache!.clear();
- 使用 File class:
提供的复制方法复制图像
final File copiedImage = await croppedImage.copy('$appDir/profile_picture.jpg');
- 将新图像存储在 File:
类型的变量中
File myImage = File(copiedImage.path);
我的代码执行以下操作:
- 使用 pickImage() 选择图像(来自 image_picker 包)
- 然后它获取选取的图像并使用 cropImage()(image_cropper 包) 对其进行裁剪
被拾取后,函数pickImage()将其保存在这个路径中:
/data/user/0/com.example.myapp/cache/9930cfca-6eb2.jpg
然后cropImage()函数将返回的图片保存在这里:
/data/user/0/com.example.myapp/cache/image_cropper_1924443.jpg
这是我的函数
Future pickImage(source) async {
try {
final pickedFile = await ImagePicker().pickImage(source: source);
if (pickedFile == null) return;
File? croppedImage = await ImageCropper.cropImage(
sourcePath: pickedFile.path,
aspectRatio: CropAspectRatio(ratioX: 1.0, ratioY: 1.0)
);
if(croppedImage == null) return;
this.image = File(croppedImage.path);
setState((){});
} on PlatformException catch (e) {
print('Failed to catch image: $e');
}
}
现在我要做的是将裁剪后的图像保存到特定的文件夹中。 有什么办法可以实现吗
其中一个解决方案是复制图像,然后 cropImage() 将其存储在其默认目录中:
得到裁剪图像后:
croppedImage = await ImageCropper.cropImage(...);
执行以下操作:
- 使用 path_provider 包获取 phone 磁盘上的应用程序文件夹:
final Directory dir = await getApplicationDocumentsDirectory();
final String appDir = dir.path
- 检查文件是否已经存在,然后删除它。
final File imageFile = File(appDir + '/profile_picture.jpg');
if (await imageFile.exists()) {
imageFile.delete();
}
- 最好清除缓存以避免一些问题:
imageCache!.clearLiveImages();
imageCache!.clear();
- 使用 File class: 提供的复制方法复制图像
final File copiedImage = await croppedImage.copy('$appDir/profile_picture.jpg');
- 将新图像存储在 File: 类型的变量中
File myImage = File(copiedImage.path);