Flutter 如何将小部件屏幕截图存储为颤振中的jpg文件?
我已经拍摄了一个小部件截图,我想将其保存为.jpg文件。我可以在下面将其保存为.png文件,但我不知道如何将其保存为.jpg文件。这是我的密码:Flutter 如何将小部件屏幕截图存储为颤振中的jpg文件?,flutter,dart,Flutter,Dart,我已经拍摄了一个小部件截图,我想将其保存为.jpg文件。我可以在下面将其保存为.png文件,但我不知道如何将其保存为.jpg文件。这是我的密码: RenderRepaintBoundary boundary = _repainkey.currentContext.findRenderObject(); ui.Image image = await boundary.toImage(); ByteData byteData = await image.toByteData(format: ui.I
RenderRepaintBoundary boundary = _repainkey.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final directory = (await getExternalStorageDirectory());
print(directory.path);
File imgFile = new File('${directory.path}/flutter2.png');
await imgFile.writeAsBytes(pngBytes);
您必须进行文件类型转换。您可以使用来帮助您完成此操作。与您正在寻找的非常相似,只是做了与您想要的相反的转换 链接答案中的示例:
导入'dart:io';
导入“package:image/image.dart”;
void main(){
//从文件中读取jpeg图像。
Image Image=decodeImage(新文件('test.jpg').readAsBytesSync());
//将图像调整为120倍的缩略图(保持纵横比)。
图像缩略图=复制调整大小(图像,120);
//将缩略图另存为PNG。
新文件('out/thumbnail test.png')
..writeAsBytesSync(encodePng(缩略图));
}
您必须进行文件类型转换。您可以使用来帮助您完成此操作。与您正在寻找的非常相似,只是做了与您想要的相反的转换 链接答案中的示例:
导入'dart:io';
导入“package:image/image.dart”;
void main(){
//从文件中读取jpeg图像。
Image Image=decodeImage(新文件('test.jpg').readAsBytesSync());
//将图像调整为120倍的缩略图(保持纵横比)。
图像缩略图=复制调整大小(图像,120);
//将缩略图另存为PNG。
新文件('out/thumbnail test.png')
..writeAsBytesSync(encodePng(缩略图));
}
谢谢,它正在工作,但我写的是..writeAsBytes(encodeJpg(..)。writeAsBytes()和writeAsBytesSync()之间是否存在差异?@hborah一个是同步函数,另一个是异步函数。问题与将图像另存为jpg而不是png有关。如何创建png到jpg,请建议。谢谢。@Kamlesh如果您真的无法从这里显示的代码或链接的答案中找到答案,请提出一个单独的问题。@Christopher您能建议我如何将png图像转换为jpg图像吗?谢谢。谢谢。它正在工作,但我写的是..writeAsBytes(encodeJpg(..)。writeAsBytes()和writeAsBytesSync()之间是否存在差异?@hborah一个是同步函数,另一个是异步函数。问题与将图像另存为jpg而不是png有关。如何创建png到jpg,请建议。谢谢。@Kamlesh如果您真的无法从这里显示的代码或链接的答案中找到答案,请提出一个单独的问题。@Christopher您能建议我如何将png图像转换为jpg图像吗?谢谢
import 'dart:io';
import 'package:image/image.dart';
void main() {
// Read a jpeg image from file.
Image image = decodeImage(new File('test.png').readAsBytesSync());
// Resize the image to a 120x? thumbnail (maintaining the aspect ratio).
Image thumbnail = copyResize(image, 120);
// Save the thumbnail as a PNG.
new File('out/thumbnail-test.jpg')
..writeAsBytesSync(encodeJpg(thumbnail));
}