|
...
|
...
|
@@ -2467,12 +2467,14 @@ class Utils { |
|
|
|
}
|
|
|
|
|
|
|
|
static Future<Uint8List> canvas(context, String _thumbnail, DateTime date,
|
|
|
|
String liteStyle, String dsolt, String ddateHm) async {
|
|
|
|
String liteStyle, String dsolt, String ddateHm, String mname) async {
|
|
|
|
var pictureRecorder = new ui.PictureRecorder(); // 图片记录仪
|
|
|
|
var canvas = new Canvas(pictureRecorder); //canvas接受一个图片记录仪
|
|
|
|
var images = await loadImage(_thumbnail, true); // 使用方法获取Unit8List格式的图片
|
|
|
|
print(images);
|
|
|
|
final Paint paint = Paint();
|
|
|
|
double scaleX = images.width / 210;
|
|
|
|
double scaleY = images.height / 168;
|
|
|
|
canvas.drawImage(images, Offset.zero, paint); //绘制原始图片
|
|
|
|
|
|
|
|
List<String> subType = liteStyle.split('-');
|
|
...
|
...
|
@@ -2483,9 +2485,9 @@ class Utils { |
|
|
|
String week = returnWeek(date, context);
|
|
|
|
String hour = subType1 == '1' || subType1 == '3' ? '${ddateHm} ' : '';
|
|
|
|
String section = subType1 == '1' || subType1 == '4'
|
|
|
|
? _getDsoltStrShow(dsolt)
|
|
|
|
? _getDsoltStrShow(dsolt, mname)
|
|
|
|
: subType1 == '2'
|
|
|
|
? _getDsoltStrShow(dsolt, isCan: false)
|
|
|
|
? _getDsoltStrShow(dsolt, mname, isCan: false)
|
|
|
|
: '';
|
|
|
|
|
|
|
|
String time = month + week + hour + section;
|
|
...
|
...
|
@@ -2501,7 +2503,8 @@ class Utils { |
|
|
|
// // 定义目标矩形,即画布的大小
|
|
|
|
// final Rect destination = Rect.fromLTWH(0.0, 0.0, w(210), w(168));
|
|
|
|
// // 绘制图像
|
|
|
|
canvas.drawRect(Rect.fromLTWH(0, 0, 500, 60), paint);
|
|
|
|
canvas.drawRect(
|
|
|
|
Rect.fromLTWH(0, 0, images.width.toDouble(), 28 * scaleY), paint);
|
|
|
|
// canvas.drawImageRect(images, source, destination, paint);
|
|
|
|
|
|
|
|
// 定义源矩形,通常是图像的全部
|
|
...
|
...
|
@@ -2533,11 +2536,15 @@ class Utils { |
|
|
|
'${Provider.of<UserModel>(context, listen: false).user!.sellername}');
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc2 = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc2 =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph2 = pb2.build()..layout(pc2);
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 14));
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 8 * scaleY));
|
|
|
|
|
|
|
|
canvas.drawRect(Rect.fromLTWH(0, 340, 500, 60), paint);
|
|
|
|
canvas.drawRect(
|
|
|
|
Rect.fromLTWH(0, images.height - 28 * scaleY, images.width.toDouble(),
|
|
|
|
28 * scaleY),
|
|
|
|
paint);
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2550,9 +2557,11 @@ class Utils { |
|
|
|
pb.addText(time);
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph = pb.build()..layout(pc);
|
|
|
|
canvas.drawParagraph(paragraph, Offset(0, 354));
|
|
|
|
canvas.drawParagraph(
|
|
|
|
paragraph, Offset(0, images.height - 28 * scaleY + 8 * scaleY));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
// ui.ParagraphBuilder pb3 = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2569,8 +2578,9 @@ class Utils { |
|
|
|
// canvas.drawParagraph(paragraph3, Offset(10, 230));
|
|
|
|
|
|
|
|
//下面的代码是生成图片的关键代码,以上绘制文字和圆圈的代码可以忽略不计
|
|
|
|
var picture =
|
|
|
|
await pictureRecorder.endRecording().toImage(500, 400); //设置生成图片的宽和高
|
|
|
|
var picture = await pictureRecorder
|
|
|
|
.endRecording()
|
|
|
|
.toImage(images.width, images.height); //设置生成图片的宽和高
|
|
|
|
var pngImageBytes =
|
|
|
|
(await picture.toByteData(format: ui.ImageByteFormat.png))!;
|
|
|
|
// var imgBytes = Uint8List.view(pngImageBytes.buffer); //这一行和下面这一行都是生成Uint8List格式的图片(原理还不知道)
|
|
...
|
...
|
@@ -2582,12 +2592,15 @@ class Utils { |
|
|
|
}
|
|
|
|
|
|
|
|
static Future<Uint8List> canvas2(context, String _thumbnail, DateTime date,
|
|
|
|
String liteStyle, String dsolt, String ddateHm) async {
|
|
|
|
String liteStyle, String dsolt, String ddateHm, String mname) async {
|
|
|
|
var pictureRecorder = new ui.PictureRecorder(); // 图片记录仪
|
|
|
|
var canvas = new Canvas(pictureRecorder); //canvas接受一个图片记录仪
|
|
|
|
var images = await loadImage(_thumbnail, true); // 使用方法获取Unit8List格式的图片
|
|
|
|
print(images);
|
|
|
|
final Paint paint = Paint();
|
|
|
|
double scaleX = images.width / 210;
|
|
|
|
double scaleY = images.height / 168;
|
|
|
|
|
|
|
|
canvas.drawImage(images, Offset.zero, paint); //绘制原始图片
|
|
|
|
|
|
|
|
List<String> subType = liteStyle.split('-');
|
|
...
|
...
|
@@ -2598,9 +2611,9 @@ class Utils { |
|
|
|
String week = returnWeek(date, context);
|
|
|
|
String hour = subType1 == '1' || subType1 == '3' ? '${ddateHm} ' : '';
|
|
|
|
String section = subType1 == '1' || subType1 == '4'
|
|
|
|
? _getDsoltStrShow(dsolt)
|
|
|
|
? _getDsoltStrShow(dsolt, mname)
|
|
|
|
: subType1 == '2'
|
|
|
|
? _getDsoltStrShow(dsolt, isCan: false)
|
|
|
|
? _getDsoltStrShow(dsolt, mname, isCan: false)
|
|
|
|
: '';
|
|
|
|
|
|
|
|
String time = week + hour + section;
|
|
...
|
...
|
@@ -2611,7 +2624,9 @@ class Utils { |
|
|
|
// paint.style = PaintingStyle.fill;
|
|
|
|
// }
|
|
|
|
// // 绘制图像
|
|
|
|
canvas.drawRect(Rect.fromLTWH(0, 0, 500, 400), paint);
|
|
|
|
canvas.drawRect(
|
|
|
|
Rect.fromLTWH(0, 0, images.width.toDouble(), images.height.toDouble()),
|
|
|
|
paint);
|
|
|
|
|
|
|
|
// if (Platform.isIOS) {
|
|
|
|
// final paint1 = Paint()
|
|
...
|
...
|
@@ -2628,15 +2643,16 @@ class Utils { |
|
|
|
maxLines: 2,
|
|
|
|
height: 1,
|
|
|
|
fontStyle: FontStyle.normal,
|
|
|
|
fontSize: 428));
|
|
|
|
fontSize: 42));
|
|
|
|
pb2.pushStyle(ui.TextStyle(color: MyColours.color_FFEFC5, fontSize: 42));
|
|
|
|
pb2.addText(
|
|
|
|
'${Provider.of<UserModel>(context, listen: false).user!.sellername}');
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc2 = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc2 =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph2 = pb2.build()..layout(pc2);
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 86));
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 32 * scaleY));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb3 = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2649,9 +2665,10 @@ class Utils { |
|
|
|
pb3.addText(month);
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc3 = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc3 =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph3 = pb3.build()..layout(pc3);
|
|
|
|
canvas.drawParagraph(paragraph3, Offset(0, 190));
|
|
|
|
canvas.drawParagraph(paragraph3, Offset(0, 79 * scaleY));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2664,13 +2681,15 @@ class Utils { |
|
|
|
pb.addText(time);
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph = pb.build()..layout(pc);
|
|
|
|
canvas.drawParagraph(paragraph, Offset(0, 285));
|
|
|
|
canvas.drawParagraph(paragraph, Offset(0, 120 * scaleY));
|
|
|
|
|
|
|
|
//下面的代码是生成图片的关键代码,以上绘制文字和圆圈的代码可以忽略不计
|
|
|
|
var picture =
|
|
|
|
await pictureRecorder.endRecording().toImage(500, 400); //设置生成图片的宽和高
|
|
|
|
var picture = await pictureRecorder
|
|
|
|
.endRecording()
|
|
|
|
.toImage(images.width, images.height); //设置生成图片的宽和高
|
|
|
|
var pngImageBytes =
|
|
|
|
(await picture.toByteData(format: ui.ImageByteFormat.png))!;
|
|
|
|
// var imgBytes = Uint8List.view(pngImageBytes.buffer); //这一行和下面这一行都是生成Uint8List格式的图片(原理还不知道)
|
|
...
|
...
|
@@ -2682,13 +2701,15 @@ class Utils { |
|
|
|
}
|
|
|
|
|
|
|
|
static Future<Uint8List> canvas3(context, String _thumbnail, DateTime date,
|
|
|
|
String liteStyle, String dsolt, String ddateHm) async {
|
|
|
|
String liteStyle, String dsolt, String ddateHm, String mname) async {
|
|
|
|
var pictureRecorder = new ui.PictureRecorder(); // 图片记录仪
|
|
|
|
var canvas = new Canvas(pictureRecorder); //canvas接受一个图片记录仪
|
|
|
|
var images = await loadImage(_thumbnail, true); // 使用方法获取Unit8List格式的图片
|
|
|
|
print(images);
|
|
|
|
final Paint paint = Paint();
|
|
|
|
canvas.drawImage(images, Offset.zero, paint); //绘制原始图片
|
|
|
|
double scaleX = images.width / 210;
|
|
|
|
double scaleY = images.height / 168;
|
|
|
|
|
|
|
|
List<String> subType = liteStyle.split('-');
|
|
|
|
// String subType0 = subType[0]; //几号模版
|
|
...
|
...
|
@@ -2698,9 +2719,9 @@ class Utils { |
|
|
|
String week = returnWeek(date, context);
|
|
|
|
String hour = subType1 == '1' || subType1 == '3' ? '${ddateHm}' : '';
|
|
|
|
String section = subType1 == '1' || subType1 == '4'
|
|
|
|
? _getDsoltStrShow(dsolt)
|
|
|
|
? _getDsoltStrShow(dsolt, mname)
|
|
|
|
: subType1 == '2'
|
|
|
|
? _getDsoltStrShow(dsolt, isCan: false)
|
|
|
|
? _getDsoltStrShow(dsolt, mname, isCan: false)
|
|
|
|
: '';
|
|
|
|
|
|
|
|
if (hour != '' && section != '') {
|
|
...
|
...
|
@@ -2715,7 +2736,9 @@ class Utils { |
|
|
|
// paint.style = PaintingStyle.fill;
|
|
|
|
// }
|
|
|
|
// // 绘制图像
|
|
|
|
canvas.drawRect(Rect.fromLTWH(0, 0, 500, 400), paint);
|
|
|
|
canvas.drawRect(
|
|
|
|
Rect.fromLTWH(0, 0, images.width.toDouble(), images.height.toDouble()),
|
|
|
|
paint);
|
|
|
|
|
|
|
|
// if (Platform.isIOS) {
|
|
|
|
// final paint1 = Paint()
|
|
...
|
...
|
@@ -2754,7 +2777,8 @@ class Utils { |
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc3 = ui.ParagraphConstraints(width: 270);
|
|
|
|
ui.Paragraph paragraph3 = pb3.build()..layout(pc3);
|
|
|
|
canvas.drawParagraph(paragraph3, Offset(155, 250));
|
|
|
|
canvas.drawParagraph(
|
|
|
|
paragraph3, Offset(images.width - 340, images.height - 180));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb4 = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2769,11 +2793,12 @@ class Utils { |
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc4 = ui.ParagraphConstraints(width: 40);
|
|
|
|
ui.Paragraph paragraph4 = pb4.build()..layout(pc4);
|
|
|
|
canvas.drawParagraph(paragraph4, Offset(430, 250));
|
|
|
|
canvas.drawParagraph(
|
|
|
|
paragraph4, Offset(images.width - 70, images.height - 180));
|
|
|
|
|
|
|
|
Rect rect = subType1 == '1'
|
|
|
|
? Rect.fromLTWH(250, 340, 220, 50)
|
|
|
|
: Rect.fromLTWH(362, 340, 104, 50);
|
|
|
|
? Rect.fromLTWH(images.width - 250, images.height - 90, 220, 50)
|
|
|
|
: Rect.fromLTWH(158 * scaleX, images.height - 90, 40 * scaleX, 50);
|
|
|
|
paint.color = MyColours.color_66FFEFC5;
|
|
|
|
RRect rRect = RRect.fromRectAndRadius(rect, Radius.circular(6));
|
|
|
|
canvas.drawRRect(rRect, paint);
|
|
...
|
...
|
@@ -2790,15 +2815,18 @@ class Utils { |
|
|
|
pb.addText(time);
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
double width = subType1 == '1' ? 240 : 154;
|
|
|
|
Offset offset = subType1 == '1' ? Offset(241, 349) : Offset(338, 349);
|
|
|
|
double width = subType1 == '1' ? 240 : 40 * scaleX;
|
|
|
|
Offset offset = subType1 == '1'
|
|
|
|
? Offset(images.width - 260, images.height - 80)
|
|
|
|
: Offset(158 * scaleX, images.height - 80);
|
|
|
|
ParagraphConstraints pc = ui.ParagraphConstraints(width: width);
|
|
|
|
ui.Paragraph paragraph = pb.build()..layout(pc);
|
|
|
|
canvas.drawParagraph(paragraph, offset);
|
|
|
|
|
|
|
|
//下面的代码是生成图片的关键代码,以上绘制文字和圆圈的代码可以忽略不计
|
|
|
|
var picture =
|
|
|
|
await pictureRecorder.endRecording().toImage(500, 400); //设置生成图片的宽和高
|
|
|
|
var picture = await pictureRecorder
|
|
|
|
.endRecording()
|
|
|
|
.toImage(images.width, images.height); //设置生成图片的宽和高
|
|
|
|
var pngImageBytes =
|
|
|
|
(await picture.toByteData(format: ui.ImageByteFormat.png))!;
|
|
|
|
// var imgBytes = Uint8List.view(pngImageBytes.buffer); //这一行和下面这一行都是生成Uint8List格式的图片(原理还不知道)
|
|
...
|
...
|
@@ -2810,7 +2838,7 @@ class Utils { |
|
|
|
}
|
|
|
|
|
|
|
|
static Future<Uint8List> canvas4(context, String _thumbnail, DateTime date,
|
|
|
|
String liteStyle, String dsolt, String ddateHm) async {
|
|
|
|
String liteStyle, String dsolt, String ddateHm, String mname) async {
|
|
|
|
var pictureRecorder = new ui.PictureRecorder(); // 图片记录仪
|
|
|
|
var canvas = new Canvas(pictureRecorder); //canvas接受一个图片记录仪
|
|
|
|
var images = await loadImage(_thumbnail, true); // 使用方法获取Unit8List格式的图片
|
|
...
|
...
|
@@ -2827,9 +2855,9 @@ class Utils { |
|
|
|
String week = returnWeek(date, context);
|
|
|
|
String hour = subType1 == '1' || subType1 == '3' ? '${ddateHm}' : '';
|
|
|
|
String section = subType1 == '1' || subType1 == '4'
|
|
|
|
? _getDsoltStrShow(dsolt)
|
|
|
|
? _getDsoltStrShow(dsolt, mname)
|
|
|
|
: subType1 == '2'
|
|
|
|
? _getDsoltStrShow(dsolt, isCan: false)
|
|
|
|
? _getDsoltStrShow(dsolt, mname, isCan: false)
|
|
|
|
: '';
|
|
|
|
|
|
|
|
if (section != '' && hour != '') {
|
|
...
|
...
|
@@ -2844,7 +2872,11 @@ class Utils { |
|
|
|
// paint.style = PaintingStyle.fill;
|
|
|
|
// }
|
|
|
|
// // 绘制图像
|
|
|
|
canvas.drawRect(Rect.fromLTWH(0, 267, 500, 133), paint);
|
|
|
|
double scaleX = images.width / 210;
|
|
|
|
double scaleY = images.height / 168;
|
|
|
|
canvas.drawRect(
|
|
|
|
Rect.fromLTWH(0, 112 * scaleY, images.width.toDouble(), 56 * scaleY),
|
|
|
|
paint);
|
|
|
|
|
|
|
|
// if (Platform.isIOS) {
|
|
|
|
// final paint1 = Paint()
|
|
...
|
...
|
@@ -2866,9 +2898,10 @@ class Utils { |
|
|
|
'${Provider.of<UserModel>(context, listen: false).user!.sellername}');
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc2 = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc2 =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph2 = pb2.build()..layout(pc2);
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 275));
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 118 * scaleY));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb3 = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2883,7 +2916,8 @@ class Utils { |
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc3 = ui.ParagraphConstraints(width: 240);
|
|
|
|
ui.Paragraph paragraph3 = pb3.build()..layout(pc3);
|
|
|
|
canvas.drawParagraph(paragraph3, Offset(subType1 == '1' ? 8 : 65, 345));
|
|
|
|
canvas.drawParagraph(paragraph3,
|
|
|
|
Offset(subType1 == '1' ? 17 * scaleX : 35 * scaleX, 146 * scaleY));
|
|
|
|
|
|
|
|
// // 绘制文字
|
|
|
|
// ui.ParagraphBuilder pb4 = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -2900,8 +2934,8 @@ class Utils { |
|
|
|
// ui.Paragraph paragraph4 = pb4.build()..layout(pc4);
|
|
|
|
// canvas.drawParagraph(paragraph4, Offset(420, 320));
|
|
|
|
|
|
|
|
Rect rect = Rect.fromLTWH(
|
|
|
|
subType1 == '1' ? 265 : 315, 335, subType1 == '1' ? 210 : 112, 50);
|
|
|
|
Rect rect = Rect.fromLTWH(subType1 == '1' ? 107 * scaleX : 127 * scaleX,
|
|
|
|
142 * scaleY, subType1 == '1' ? 80 * scaleX : 40 * scaleX, 20 * scaleY);
|
|
|
|
paint.color = MyColours.color_66FFEFC5;
|
|
|
|
RRect rRect = RRect.fromRectAndRadius(rect, Radius.circular(6));
|
|
|
|
canvas.drawRRect(rRect, paint);
|
|
...
|
...
|
@@ -2920,15 +2954,24 @@ class Utils { |
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
|
|
|
|
Offset offset = subType1 == '1' ? Offset(265, 345) : Offset(315, 345);
|
|
|
|
ParagraphConstraints pc =
|
|
|
|
ui.ParagraphConstraints(width: subType1 == '1' ? 210 : 112);
|
|
|
|
Offset offset = subType1 == '1'
|
|
|
|
? Offset(
|
|
|
|
103 * scaleX,
|
|
|
|
146 * scaleY,
|
|
|
|
)
|
|
|
|
: Offset(
|
|
|
|
126 * scaleX,
|
|
|
|
146 * scaleY,
|
|
|
|
);
|
|
|
|
ParagraphConstraints pc = ui.ParagraphConstraints(
|
|
|
|
width: subType1 == '1' ? 87 * scaleX : 41 * scaleX);
|
|
|
|
ui.Paragraph paragraph = pb.build()..layout(pc);
|
|
|
|
canvas.drawParagraph(paragraph, offset);
|
|
|
|
|
|
|
|
//下面的代码是生成图片的关键代码,以上绘制文字和圆圈的代码可以忽略不计
|
|
|
|
var picture =
|
|
|
|
await pictureRecorder.endRecording().toImage(500, 400); //设置生成图片的宽和高
|
|
|
|
var picture = await pictureRecorder
|
|
|
|
.endRecording()
|
|
|
|
.toImage(images.width, images.height); //设置生成图片的宽和高
|
|
|
|
var pngImageBytes =
|
|
|
|
(await picture.toByteData(format: ui.ImageByteFormat.png))!;
|
|
|
|
// var imgBytes = Uint8List.view(pngImageBytes.buffer); //这一行和下面这一行都是生成Uint8List格式的图片(原理还不知道)
|
|
...
|
...
|
@@ -2960,7 +3003,11 @@ class Utils { |
|
|
|
// paint.style = PaintingStyle.fill;
|
|
|
|
// }
|
|
|
|
// // 绘制图像
|
|
|
|
canvas.drawRect(Rect.fromLTWH(0, 0, 500, 400), paint);
|
|
|
|
double scaleX = images.width / 210;
|
|
|
|
double scaleY = images.height / 168;
|
|
|
|
canvas.drawRect(
|
|
|
|
Rect.fromLTWH(0, 0, images.width.toDouble(), images.height.toDouble()),
|
|
|
|
paint);
|
|
|
|
|
|
|
|
// // 定义源矩形,通常是图像的全部
|
|
|
|
// final Rect source = Rect.fromLTWH(
|
|
...
|
...
|
@@ -2989,9 +3036,10 @@ class Utils { |
|
|
|
'${Provider.of<UserModel>(context, listen: false).user!.sellername}');
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc2 = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc2 =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph2 = pb2.build()..layout(pc2);
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(10, 40));
|
|
|
|
canvas.drawParagraph(paragraph2, Offset(0, 15 * scaleY));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -3004,9 +3052,10 @@ class Utils { |
|
|
|
pb.addText(month);
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph = pb.build()..layout(pc);
|
|
|
|
canvas.drawParagraph(paragraph, Offset(10, 160));
|
|
|
|
canvas.drawParagraph(paragraph, Offset(0, 70 * scaleY));
|
|
|
|
|
|
|
|
// 绘制文字
|
|
|
|
ui.ParagraphBuilder pb3 = ui.ParagraphBuilder(ui.ParagraphStyle(
|
|
...
|
...
|
@@ -3019,9 +3068,10 @@ class Utils { |
|
|
|
pb3.addText(week);
|
|
|
|
|
|
|
|
// 设置文本的宽度约束
|
|
|
|
ParagraphConstraints pc3 = ui.ParagraphConstraints(width: 500);
|
|
|
|
ParagraphConstraints pc3 =
|
|
|
|
ui.ParagraphConstraints(width: images.width.toDouble());
|
|
|
|
ui.Paragraph paragraph3 = pb3.build()..layout(pc3);
|
|
|
|
canvas.drawParagraph(paragraph3, Offset(10, 260));
|
|
|
|
canvas.drawParagraph(paragraph3, Offset(0, 109 * scaleY));
|
|
|
|
|
|
|
|
//下面的代码是生成图片的关键代码,以上绘制文字和圆圈的代码可以忽略不计
|
|
|
|
// var picture = await pictureRecorder
|
|
...
|
...
|
@@ -3036,8 +3086,9 @@ class Utils { |
|
|
|
// Uint8List result = await realComporessList(pngBytes); //压缩图片
|
|
|
|
// return result;
|
|
|
|
//下面的代码是生成图片的关键代码,以上绘制文字和圆圈的代码可以忽略不计
|
|
|
|
var picture =
|
|
|
|
await pictureRecorder.endRecording().toImage(500, 400); //设置生成图片的宽和高
|
|
|
|
var picture = await pictureRecorder
|
|
|
|
.endRecording()
|
|
|
|
.toImage(images.width, images.height); //设置生成图片的宽和高
|
|
|
|
var pngImageBytes =
|
|
|
|
(await picture.toByteData(format: ui.ImageByteFormat.png))!;
|
|
|
|
// var imgBytes = Uint8List.view(pngImageBytes.buffer); //这一行和下面这一行都是生成Uint8List格式的图片(原理还不知道)
|
|
...
|
...
|
@@ -3205,20 +3256,59 @@ class Utils { |
|
|
|
return isSuccess;
|
|
|
|
}
|
|
|
|
|
|
|
|
static _getDsoltStrShow(String ddateSolt, {bool isCan = true}) {
|
|
|
|
static _getDsoltStrShow(String ddateSolt, String mname, {bool isCan = true}) {
|
|
|
|
String dsoltStr = '';
|
|
|
|
if (!isCan) {
|
|
|
|
dsoltStr = ddateSolt == '1'
|
|
|
|
? '早上'
|
|
|
|
: ddateSolt == '2'
|
|
|
|
? '中午'
|
|
|
|
: '晚上';
|
|
|
|
if (mname == '早餐' || mname == '午餐' || mname == '晚餐') {
|
|
|
|
dsoltStr = ddateSolt == '1'
|
|
|
|
? '早上'
|
|
|
|
: ddateSolt == '2'
|
|
|
|
? '中午'
|
|
|
|
: '晚上';
|
|
|
|
} else {
|
|
|
|
dsoltStr = mname;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
dsoltStr = ddateSolt == '1'
|
|
|
|
? '早餐'
|
|
|
|
: ddateSolt == '2'
|
|
|
|
? '午餐'
|
|
|
|
: '晚餐';
|
|
|
|
if (mname == '早餐' || mname == '午餐' || mname == '晚餐') {
|
|
|
|
dsoltStr = ddateSolt == '1'
|
|
|
|
? '早餐'
|
|
|
|
: ddateSolt == '2'
|
|
|
|
? '午餐'
|
|
|
|
: '晚餐';
|
|
|
|
} else {
|
|
|
|
dsoltStr = mname;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return dsoltStr;
|
|
|
|
}
|
|
|
|
|
|
|
|
static _getDsoltStrShowOld(
|
|
|
|
String? ddateHm,
|
|
|
|
String? liteStyle,
|
|
|
|
String ddateSolt,
|
|
|
|
String mname,
|
|
|
|
) {
|
|
|
|
String dsoltStr = '${ddateHm == null || ddateHm == '' ? '' : ddateHm}';
|
|
|
|
if (liteStyle == '1') {
|
|
|
|
if (mname == '早餐' || mname == '午餐' || mname == '晚餐') {
|
|
|
|
dsoltStr = ddateSolt == '1'
|
|
|
|
? '早上'
|
|
|
|
: ddateSolt == '2'
|
|
|
|
? '中午'
|
|
|
|
: '晚上';
|
|
|
|
} else {
|
|
|
|
dsoltStr = mname;
|
|
|
|
}
|
|
|
|
} else if (liteStyle == '3') {
|
|
|
|
if (mname == '早餐' || mname == '午餐' || mname == '晚餐') {
|
|
|
|
dsoltStr = ddateSolt == '1'
|
|
|
|
? '早餐'
|
|
|
|
: ddateSolt == '2'
|
|
|
|
? '午餐'
|
|
|
|
: '晚餐';
|
|
|
|
} else {
|
|
|
|
dsoltStr = mname;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return dsoltStr;
|
|
|
|
}
|
|
...
|
...
|
@@ -3231,6 +3321,7 @@ class Utils { |
|
|
|
String ddateHm,
|
|
|
|
DateTime dateTime,
|
|
|
|
String ddateSolt,
|
|
|
|
String mname,
|
|
|
|
String? liteStyle,
|
|
|
|
String? liteStyleTitle,
|
|
|
|
{bool isWechat = true,
|
|
...
|
...
|
@@ -3249,7 +3340,6 @@ class Utils { |
|
|
|
await WxSdk.fetchImageAsUint8List(_thumbnail);
|
|
|
|
print(size(_thumbnail.length));
|
|
|
|
|
|
|
|
String dsoltStr = '${ddateHm == null || ddateHm == '' ? '' : ddateHm}';
|
|
|
|
// dsoltStr = _getDsoltStrShow(liteStyle!, ddateSolt);
|
|
|
|
if (liteStyle != '0') {
|
|
|
|
//画图
|
|
...
|
...
|
@@ -3258,7 +3348,7 @@ class Utils { |
|
|
|
String month =
|
|
|
|
'${Utils.addZeroNumber(dateTime.month)}月${Utils.addZeroNumber(dateTime.day)}日';
|
|
|
|
String weekAndDsolt = returnWeek(dateTime, context) +
|
|
|
|
_getDsoltStrShow(ddateSolt, isCan: liteStyle == '1' ? false : true);
|
|
|
|
_getDsoltStrShowOld(ddateHm, liteStyle, ddateSolt, mname);
|
|
|
|
_thumbnailUint8List = await canvasold(
|
|
|
|
context,
|
|
|
|
sellerImage == null || sellerImage == ''
|
|
...
|
...
|
@@ -3278,7 +3368,8 @@ class Utils { |
|
|
|
dateTime,
|
|
|
|
liteStyle,
|
|
|
|
ddateSolt,
|
|
|
|
ddateHm);
|
|
|
|
ddateHm,
|
|
|
|
mname);
|
|
|
|
} else if (subType0 == '2') {
|
|
|
|
_thumbnailUint8List = await canvas2(
|
|
|
|
context,
|
|
...
|
...
|
@@ -3288,7 +3379,8 @@ class Utils { |
|
|
|
dateTime,
|
|
|
|
liteStyle,
|
|
|
|
ddateSolt,
|
|
|
|
ddateHm);
|
|
|
|
ddateHm,
|
|
|
|
mname);
|
|
|
|
} else if (subType0 == '3') {
|
|
|
|
_thumbnailUint8List = await canvas3(
|
|
|
|
context,
|
|
...
|
...
|
@@ -3298,7 +3390,8 @@ class Utils { |
|
|
|
dateTime,
|
|
|
|
liteStyle,
|
|
|
|
ddateSolt,
|
|
|
|
ddateHm);
|
|
|
|
ddateHm,
|
|
|
|
mname);
|
|
|
|
} else {
|
|
|
|
_thumbnailUint8List = await canvas4(
|
|
|
|
context,
|
|
...
|
...
|
@@ -3308,7 +3401,8 @@ class Utils { |
|
|
|
dateTime,
|
|
|
|
liteStyle,
|
|
|
|
ddateSolt,
|
|
|
|
ddateHm);
|
|
|
|
ddateHm,
|
|
|
|
mname);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
...
|
...
|
|