我尝试了几次但都失败了,我还剖析了 [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] 删除。
我来说两句