Flutter 省道(颤振)画布。drawImageRect:绘制圆图像

Flutter 省道(颤振)画布。drawImageRect:绘制圆图像,flutter,dart,Flutter,Dart,我正在尝试将图像转换为UInt8列表 这是我的代码: Future<Uint8List> getBytesFromCanvas(int width, int height, urlAsset) async { final ui.PictureRecorder pictureRecorder = ui.PictureRecorder(); final Canvas canvas = Canvas(pictureRecorder); final ByteDa

我正在尝试将图像转换为UInt8列表

这是我的代码:

  Future<Uint8List> getBytesFromCanvas(int width, int height, urlAsset) async {
    final ui.PictureRecorder pictureRecorder = ui.PictureRecorder();
    final Canvas canvas = Canvas(pictureRecorder);

    final ByteData datai = await rootBundle.load(urlAsset);
    var imaged = await loadImage(new Uint8List.view(datai.buffer));
    canvas.drawImageRect(
      imaged,
      Rect.fromLTRB(
          100, 100, imaged.width.toDouble(), imaged.height.toDouble()),
      Rect.fromCircle(center: new Offset(100, 100), radius: 100),
      new Paint(),
    );

    final img = await pictureRecorder.endRecording().toImage(width, height);
    final data = await img.toByteData(format: ui.ImageByteFormat.png);
    return data.buffer.asUint8List();
  }
Future getBytesFromCanvas(int-width、int-height、urlAsset)异步{
final ui.PictureRecorder PictureRecorder=ui.PictureRecorder();
最终画布=画布(pictureRecorder);
final ByteData datai=等待rootBundle.load(urlAsset);
var imaged=await loadImage(新的Uint8List.view(datai.buffer));
canvas.drawImageRect(
想象,
Rect.fromLTRB(
100,100,imaged.width.toDouble(),imaged.height.toDouble(),
矩形自圆(中心:新偏移(100100),半径:100),
新油漆(),
);
最终img=等待图片记录器.endRecording().toImage(宽度、高度);
最终数据=等待img.toByteData(格式:ui.ImageByteFormat.png);
返回data.buffer.asUint8List();
}
这将提供一个矩形图像,而不是圆形图像。 我做错了什么


多谢各位

为什么它会给人一个圆圈的印象?我是个新手。。。。我想,因为我添加了Rect.fromCircle,它会给出一个圆?不,
Rect.fromCircle
仍然返回普通的
Rect
(检查源代码是如何实现的)-您需要的是
ImageShader
谢谢!我修改了文档,是否需要在paint:paint()…shader=ImageShader(构造函数)之后添加此内容?我应该使用哪个构造函数来获取圆?只有一个构造函数,如果您有图像(例如100x100),请使用该油漆绘制半径为50、中心为50,50的圆