【问题标题】:Flutter: Merge two images and store it in local storage as a single imageFlutter:合并两张图片,作为单张图片存储在本地存储中
【发布时间】:2020-04-23 23:24:21
【问题描述】:

我想合并两张图片并将它们显示并存储为一张图片。

【问题讨论】:

  • 如果您想重叠它们,请使用 Stack 小部件。如果可以的话,也许可以为 png 图像提供透明度
  • 你想如何合并它们?一张图片旁边一张?两个图像都与一些透明度渐变重叠?还有什么?
  • 我想将它们合并到一个不想重叠的旁边。你可以把它想象成书的左右两页,我想把它们显示为一张长方形的纸
  • 所以也许使用Row
  • 想到了。但是,虽然点击必须将缩放视图显示为单个图像。就像在图库应用中一样

标签: flutter dart


【解决方案1】:

找到答案了,感谢这个很棒的库https://pub.dev/packages/image

final image1 = decodeImage(File('imageA.jpg').readAsBytesSync());
final image2 = decodeImage(File('imageB.jpg').readAsBytesSync());
final mergedImage = Image(image1.width + image2.width, max(image1.height, image2.height));
copyInto(mergedImage, image1, blend = false);
copyInto(mergedImage, image2, dstx = image1.width, blend = false);

final documentDirectory = await getApplicationDocumentsDirectory();
final file = new File(join(documentDirectory.path, "merged_image.jpg"));
file.writeAsBytesSync(encodeJpg(mergedImage));

【讨论】:

  • 您好,如何加入多张动态图片?
  • 如何将 png 图像转换为 jpg?请分享。谢谢。
  • @Jagath Ratchagan 你能找到解决方案吗stackoverflow.com/questions/64604475/…我有一段你的代码
  • 完美!谢谢贾加特
  • 什么是加入最终文件 = new File(join(documentDirectory.path, "merged_image.jpg"));在这一行
【解决方案2】:

您可以使用堆栈和不透明度小部件

【讨论】:

    【解决方案3】:

    使用 Stack 小部件重叠 2 个图像。 使用 .png 的透明度。

    Stack(
      children: <Widget>[
        Image.asset('images/background.png'), // Background Image !
        Image.asset('images/front.png'), 
      ]
    )
    

    “孩子”列表中的顺序很重要!

    【讨论】:

    • 这是您在 UI 中“显示”两张图片的方式,而不是您实际将两个图片文件组合成一个图片文件的方式。
    猜你喜欢
    • 2011-10-31
    • 2011-11-04
    • 2022-01-19
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    相关资源
    最近更新 更多