【问题标题】:How to split/divide image in parts in Flutter如何在 Flutter 中分割/分割图像
【发布时间】:2020-02-10 06:36:00
【问题描述】:

如何将图像分割成大小相等的部分?只需从asset中取出一张图片,然后以类似网格的方式将其分成相等的部分,这样每个图片部分都可以用作单独的图片。

类似图片的东西

【问题讨论】:

    标签: image flutter flutter-layout


    【解决方案1】:

    您可以使用此包 (https://pub.dev/packages/image) 使用函数 copyCrop 从资产中裁剪图像。将它们保存到列表,然后像您的示例一样显示。

    编辑:

    如果您知道如何裁剪图像,我认为您知道如何拆分图像并像您的示例一样显示它们,所以我只向您展示如何从资产图像​​更改为图像包的图像以进行裁剪。

    List<Image> splitImage(List<int> input) {
      // convert image to image from image package
      imglib.Image image = imglib.decodeImage(input);
    
      int x = 0, y = 0;
      int width = (image.width / 3).round();
      int height = (image.height / 3).round();
    
      // split image to parts
      List<imglib.Image> parts = List<imglib.Image>();
      for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
          parts.add(imglib.copyCrop(image, x, y, width, height));
          x += width;
        }
        x = 0;
        y += height;
      }
    
      // convert image from image package to Image Widget to display
      List<Image> output = List<Image>();
      for (var img in parts) {
        output.add(Image.memory(imglib.encodeJpg(img)));
      }
    
      return output;
    }
    

    记得把这个 import 'package:image/image.dart' 添加为 imglib;

    【讨论】:

    • 您能否提供示例代码或链接示例帖子以进行类似网格的拆分?
    • 函数中的输出返回是Image Widget,所以你可以将它添加到Container child中来显示这些图像
    • 刚刚想通了;感谢您的代码;您能否编辑代码以更正小问题,然后我可以将其标记为已接受。
    • 有没有办法检查两张图片是否相等或相似?需要*.com/questions/58372045的帮助
    • 我可以将图像分割成任意形状而不仅仅是一个矩形吗?就像使用Path 来定义切口的形状一样。