Merge pull request #2359 from krisgiesing/scaling_quality
Use bilinear interpolation when scaling images
diff --git a/packages/flutter/lib/src/painting/box_painter.dart b/packages/flutter/lib/src/painting/box_painter.dart
index dce01de..e34b7a7 100644
--- a/packages/flutter/lib/src/painting/box_painter.dart
+++ b/packages/flutter/lib/src/painting/box_painter.dart
@@ -560,6 +560,12 @@
Paint paint = new Paint()..isAntiAlias = false;
if (colorFilter != null)
paint.colorFilter = colorFilter;
+ if (sourceSize != destinationSize) {
+ // Use the "low" quality setting to scale the image, which corresponds to
+ // bilinear interpolation, rather than the default "none" which corresponds
+ // to nearest-neighbor.
+ paint.filterQuality = FilterQuality.low;
+ }
double dx = (outputSize.width - destinationSize.width) * (alignX ?? 0.5);
double dy = (outputSize.height - destinationSize.height) * (alignY ?? 0.5);
Point destinationPosition = rect.topLeft + new Offset(dx, dy);