Flutter 如何将小部件屏幕截图存储为颤振中的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

我已经拍摄了一个小部件截图,我想将其保存为.jpg文件。我可以在下面将其保存为.png文件,但我不知道如何将其保存为.jpg文件。这是我的密码:

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));
}