【发布时间】:2021-11-11 10:03:42
【问题描述】:
我使用 Canvas 对图像进行了一些特殊的绘制,然后保存。
当我调用picture.toImage 时,内存不会回落。
好像picutre.toImage已经缓存了图片,可以释放这个缓存吗?
void _getImage() async {
final imageFile = await _picker.getImage(source: ImageSource.gallery);
if (imageFile == null) {
return;
}
Uint8List bytes = await imageFile.readAsBytes();
final Completer<ui.Image> completer = Completer();
ui.decodeImageFromList(bytes, (ui.Image img) {
return completer.complete(img);
});
ui.Image image = await completer.future;
Size size = Size(image.width.toDouble(), image.height.toDouble());
final recorder = ui.PictureRecorder();
final canvas = Canvas(
recorder,
Rect.fromLTWH(
0, 0, image.width.toDouble(), image.height.toDouble()));
canvas.drawImageRect(
image,
ui.Rect.fromLTWH(
0, 0, image.width.toDouble(), image.height.toDouble()),
ui.Rect.fromLTWH(
0, 0, image.width.toDouble(), image.height.toDouble()),
Paint());
image.dispose();
ui.Picture picture = recorder.endRecording();
final resutImage =
await picture.toImage(size.width.toInt(), size.height.toInt());
picture.dispose();
resutImage.dispose();
}
【问题讨论】:
标签: image flutter canvas memory