【问题标题】:How can I store widget screenshot as jpg file in flutter?如何在颤动中将小部件屏幕截图存储为 jpg 文件?
【发布时间】:2020-06-12 04:28:01
【问题描述】:

我已经截取了一个小部件屏幕截图,我想将其保存为 .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);

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您必须进行文件类型转换。您可以使用image package 来帮助您执行此操作。 This answer 与您要查找的内容非常相似,只是进行了与您想要的相反的转换。

    来自链接答案的示例:

    import 'dart:io';
    import 'package:image/image.dart';
    void main() {
      // Read a jpeg image from file.
      Image image = decodeImage(new File('test.jpg').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.png')
        ..writeAsBytesSync(encodePng(thumbnail));
    }
    

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

    【讨论】:

    • 谢谢它正在工作,但我把它写成 ..writeAsBytes(encodeJpg(..))。 writeAsBytes() 和 writeAsBytesSync() 有区别吗?
    • @hborah 一个是同步函数,一个是异步函数。
    • 问题与将图像保存为 jpg 而不是 png 相关。如何将png创建为jpg,请建议。谢谢。
    • @Kamlesh 如果您真的无法从此处显示的代码或链接的答案中弄清楚,请提出一个单独的问题。
    • @ChristopherMoore 您能否建议我如何将 png 图像转换为 jpg 图像?谢谢。
    猜你喜欢
    • 2019-05-07
    • 2020-11-12
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多