如何从服务器端的颤振材料小部件制作图像

noobdev

我尝试了几次但都失败了,我还剖析了 [image] 和 pdf 库,但我不明白如何仅在服务器端为图像创建小部件,

有谁知道如何仅在服务器端为图像制作小部件?

这是我尝试过的代码

import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'dart:ui' as ui; 
void main() async {
  GlobalKey globalKey = GlobalKey();
  RepaintBoundary(
    key: globalKey,
    child: Container(
      padding: const EdgeInsets.all(50),
      child: const Text(
        "Hello world",
      ),
    ),
  );
  RenderRepaintBoundary boundary = globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
  ui.Image image = await boundary.toImage();
  ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
  Uint8List pngBytes = byteData!.buffer.asUint8List();
  print(pngBytes);
}
 
迈克尔·霍恩

Flutter 不打算在服务器端使用,但如果你只是想在服务器上渲染带有一些文本的图像,那么有 dart 库可以做到这一点。

例如,使用图像库,您可以执行以下操作:

import 'dart:io';

import 'package:image/image.dart';

void main() {
  final white = 0xFFFFFFFF;
  final black = 0xFF000000;

  final whiteRect = fill(Image(200, 100), white);

  final helloWorld = drawStringCentered(
    whiteRect,
    arial_24,
    "Hello, World!",
    color: black,
  );

  final data = encodePng(helloWorld);

  final file = File('test.png');

  // Save the image to '$PROJECT_ROOT/test.png'
  file.writeAsBytes(data);
}

这将创建此输出:

你好世界图片

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章