imageFromText function

Future<ImageData> imageFromText(
  1. String text, {
  2. Size? labelSize,
  3. TextStyle style = presetTextStyle,
})

Implementation

Future<ImageData> imageFromText(
  String text, {
  Size? labelSize,
  TextStyle style = presetTextStyle,
  //TextAlign alignment = TextAlign.center,
}) async {
  m.TextPainter textPainter = m.TextPainter(
    // Adjust the scaling factor for good resolution when printing
    textScaler: TextScaler.linear(50),
    text: TextSpan(text: text, style: style),
    textAlign: TextAlign.center,
    textDirection: TextDirection.ltr,
  )..layout(minWidth: 0, maxWidth: double.infinity);

  final Size size = Size(textPainter.width, textPainter.height);

  final PictureRecorder recorder = PictureRecorder();
  Canvas newCanvas = Canvas(recorder);
  newCanvas.drawColor(m.Colors.white, m.BlendMode.color);
  textPainter.paint(newCanvas, Offset.zero);
  final Picture picture = recorder.endRecording();
  final res = await picture.toImage(size.width.toInt(), size.height.toInt());
  final data = await res.toByteData(format: ImageByteFormat.png);

  if (data == null) throw Exception("Failed to convert image to byte data.");

  return img.decodePng(Uint8List.view(data.buffer))!;
}