【问题标题】:Flutter- How to resize height and width of an image in custom Paint?Flutter-如何在自定义Paint中调整图像的高度和宽度?
【发布时间】:2018-06-25 10:35:51
【问题描述】:

在这里,我将图像列表传递给 ImagePaint 类以将图像裁剪为圆形,图像正在裁剪但仅裁剪图像的一部分,如果我可以减小图像的高度和宽度。然后它会适合圆圈,如果有任何想法请评论。

void paint(Canvas canvas, Size size) {
int c = 0;
canvas.save();
canvas.translate(size.width / 2, size.height / 2);
canvas.rotate(-rotation);

for (var i = 0; i < 16; ++i) {
  if (i % 2 == 0) {
    canvas.drawLine(
      new Offset(0.0, 0.0),
      new Offset(0.0, size.width / 2 - 4.2),
      tickPaint,
    );
  } else {
    canvas.save();
    canvas.translate(-0.0, -((size.width) / 2));
    canvas.clipPath(path);
    if (images[c] != null) {
      ui.Image img = images[c];
      canvas.drawImage(img, Offset(0.0, 0.0), new Paint());
    }
    canvas.rotate(2 * pi);
    canvas.restore();
    c++;
  }
  canvas.rotate(2 * pi / 16);
}
canvas.restore();}

此图像以圆形方式打印:

这是我的应用程序,我正在剪切图像并以圆形打印:

【问题讨论】:

  • 我还没有在 Flutter 中检查过画布,但你可以尝试使用“ClipOval”在椭圆中剪辑图像吗?
  • 为什么要手动绘制而不是直接使用Image
  • 因为我想旋转这个,用我的手指手动旋转,如果有任何其他方式旋转和使用小部件以圆形打印图像,请评论。
  • 问题已解决。 ui.Image img = images[c]; final ui.Rect rect = ui.Offset.zero &amp; new Size(200.0, 120.0); final Size imageSize = new Size(330.0, 230.0); FittedSizes sizes = applyBoxFit(boxfit, imageSize, new Size(100.0, 200.0)); final Rect inputSubrect = Alignment.center.inscribe(sizes.source, Offset.zero &amp; imageSize); final Rect outputSubrect = Alignment.center.inscribe(sizes.destination, rect); canvas.drawImageRect(img, inputSubrect, outputSubrect, new Paint());

标签: dart flutter


【解决方案1】:

我只是想出了如何缩小图像并将其发送给画家进行绘制。

缩小图像的方法和返回的内容被发送到绘图类。

如果对你有用,谢谢我的回复,竖起大拇指,谢谢。

import 'dart:ui' as ui;
import 'package:image/image.dart' as IMG;

Future<ui.Image> loadImage( List<int> data ) async {
   final IMG.Image image = IMG.decodeImage(data);
   final IMG.Image resized = IMG.copyResize(image, width: 200);
   final List<int> resizedBytes = IMG.encodePng(resized);
   final Completer<ui.Image> completer = new Completer();

   ui.decodeImageFromList(resizedBytes, (ui.Image img) => completer.complete(img));
   return completer.future;
}

绘图类。

class CustomDraw extends CustomPainter {
  final ui.Image image;

   const CustomDraw({this.image});

  @override
  void paint(Canvas canvas, Size size) {
    Paint paint = new Paint();
    canvas.drawImage(image, new Offset(40.0, 10.0), paint);
  }

   @override
   bool shouldRepaint(CustomPainter oldDelegate) {
     return false;
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-23
    • 2021-09-11
    • 2023-03-15
    • 1970-01-01
    • 2014-12-11
    • 2018-05-26
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多