diff --git a/third_party/packages/flutter_svg/README.md b/third_party/packages/flutter_svg/README.md index aa87cf2dd02..a85546590b8 100644 --- a/third_party/packages/flutter_svg/README.md +++ b/third_party/packages/flutter_svg/README.md @@ -122,7 +122,25 @@ import 'dart:ui' as ui; canvas.drawPicture(pictureInfo.picture); // Or convert the picture to an image: - final ui.Image image = await pictureInfo.picture.toImage(width, height); + ui.Image image = await pictureInfo.picture.toImage(width, height); + + // Or convert the picture to a scaled image: + const double targetWidth = 512; + const double targetHeight = 512; + final pictureRecorder = ui.PictureRecorder(); + canvas = Canvas( + pictureRecorder, + Rect.fromPoints(Offset.zero, const Offset(targetWidth, targetHeight)), + ); + canvas.scale( + targetWidth / pictureInfo.size.width, + targetHeight / pictureInfo.size.height, + ); + canvas.drawPicture(pictureInfo.picture); + image = await pictureRecorder.endRecording().toImage( + targetWidth.ceil(), + targetHeight.ceil(), + ); pictureInfo.picture.dispose(); ``` diff --git a/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart b/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart index aa28285dff1..ba614e54c40 100644 --- a/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart +++ b/third_party/packages/flutter_svg/example/lib/readme_excerpts.dart @@ -79,7 +79,7 @@ Widget loadPrecompiledAsset() { /// Demonstrates converting SVG to another type. Future convertSvgOutput() async { - final canvas = Canvas(ui.PictureRecorder()); + var canvas = Canvas(ui.PictureRecorder()); const width = 100; const height = 100; @@ -94,7 +94,25 @@ Future convertSvgOutput() async { canvas.drawPicture(pictureInfo.picture); // Or convert the picture to an image: - final ui.Image image = await pictureInfo.picture.toImage(width, height); + ui.Image image = await pictureInfo.picture.toImage(width, height); + + // Or convert the picture to a scaled image: + const double targetWidth = 512; + const double targetHeight = 512; + final pictureRecorder = ui.PictureRecorder(); + canvas = Canvas( + pictureRecorder, + Rect.fromPoints(Offset.zero, const Offset(targetWidth, targetHeight)), + ); + canvas.scale( + targetWidth / pictureInfo.size.width, + targetHeight / pictureInfo.size.height, + ); + canvas.drawPicture(pictureInfo.picture); + image = await pictureRecorder.endRecording().toImage( + targetWidth.ceil(), + targetHeight.ceil(), + ); pictureInfo.picture.dispose(); // #enddocregion OutputConversion