我使用图像插件(image: ^2.0.4),这样我就可以在图像上写入一些内容,然后将新图像保存到设备或通过邮件发送.我try 用"new File"加载图像,但在抖动时出错.我询问和搜索,得到一个提示,我可以使用rootBundle来加载fltter中的图像.我做了,我得到了下面的错误.
[ERROR:topaz/lib/tonic/logging/dart_error.cc(16)]未处理的异常: 无法加载assets资源 :packages/myAppName/assets/images/ReceiptRaw_1.jpg
当我创建一个简单的dart控制台应用程序时,该插件可以工作,但无法使用Flatter加载.请帮忙,
This is the Flutter Code:个
Future<bool> makeReceiptImage() async {
// UPDATE ****************************************
// load the receipt jpeg
var imageData = await rootBundle.load('packages/myAppName/dekonts/ReceiptRaw_1.jpg');
print("imageData: $imageData"); // Prints as imageData: Instance of
'_ByteDataView'
// UPDATE ****************************************
Image _receiptImage = await decodeImage(new File(imageData).readAsBytesSync());
drawString(_receiptImage, arial_48, 440, 30, “Customer Name”, color: 0xFF000000);
// Write it to disk as a different jpeg
var new_jpeg = await encodeJpg(_receiptImage);
String newImagePath = await rootBundle.loadString('packages/myAppName/assets/images/ReceiptRaw_2.jpg');
await new File(‘$newImagePath’).writeAsBytesSync(new_jpeg);
}
This is the Dart Console Code:个
import 'dart:io';
import 'dart:convert';
import 'dart:async';
import 'package:image/image.dart';
void main() async {
// load the receipt jpeg
String mImagePath = 'images/ReceiptRaw_1.jpg';
Image _receiptImage = decodeImage(new File(mImagePath).readAsBytesSync());
drawString(_receiptImage, arial_48, 440, 30, “Customer Name”, color: 0xFF000000);
// Write it to disk as a different jpeg
var new_jpeg = encodeJpg(_receiptImage);
new File('images/ReceiptRaw_1.jpg').writeAsBytesSync(new_jpeg);
}
Update-1:个 当我使用下面的代码时,我得到错误信息,如下所示:
在pubspec.yaml中检测到错误: No file or variants found for asset: packages/myAppName/assets/images/ReceiptRaw_1.jpg个
String imageData = await rootBundle.loadString('packages/myAppName/assets/images/ReceiptRaw_1.jpg');
Image _receiptImage = await decodeImage(new File(imageData).readAsBytesSync());
Update-2:
错误:无法将‘dart.type_data::ByteData’类型的值赋给‘dart.core::string’类型的变量.
var imageData = await rootBundle.load('packages/myAppName/assets/images/ReceiptRaw_1.jpg');
Image _receiptImage = await decodeImage(new File(imageData).readAsBytesSync());
New 更新:个
Step 1:
Change to:个个
assets:
- packages/myAppName/dekonts/ReceiptRaw_1.jpg
Change to:个个
var imageData = await rootBundle.load('packages/myAppName/dekonts/ReceiptRaw_1.jpg');
print("imageData: $imageData");
Result:张照片
ImageData:"_ByteDataView"的实例
Step 2:
Move to /lib/assets/images/ReceiptRaw_1.jpg
文件夹
Change to:个个
assets:
- packages/myAppName/lib/assets/images/ReceiptRaw_1.jpg
Change to:个个
var imageData = await rootBundle.load('packages/myAppName/lib/assets/images/ReceiptRaw_1.jpg');
print("imageData: $imageData");
Result:收到错误,错误为:
正在解析依赖关系. 正在运行"gradlew AssembleDebug". 在pubspec.yaml中检测到错误: 找不到assets资源 的文件或变体:packages/myAppName/lib/assets/images/ReceiptRaw_1.jpg
更新:
/要包括例如第一张图片,应用程序的
pubspec.yaml
应
/在assets资源 部分指定:
/
/assets资源 : /-packages/fancy_backgrounds/backgrounds/background1.png /
/101 is implied,因此不应包含在assets资源 路径中.