当我从图像选取器中选取图像时,我需要将图像背景移除为白色,但我不想使用API进行这项工作.我可以使用第三方插件.

推荐答案

如果想要自定义背景色,需要更改线条

 Img.Image transparentImage = await colorTransparent(image, 255, 255, 255);

现在是255,255,255,所以它现在变成了白色.

Future<Uint8List> _downloadImage() async {
    String dir = (await getApplicationDocumentsDirectory()).path;
    File file = new File('$dir/$_filename');

    if (file.existsSync()) {
      var image = await file.readAsBytes();
      return image;
    } else {
      var response = await http.get(_url,);
      var bytes = response.bodyBytes;
      Uint8List newPng = await removeWhiteBackground(bytes);
      file.writeAsBytes(newPng);
      return newPng;
    }
  }

  Future<Uint8List> removeWhiteBackground(Uint8List bytes) async {
    Img.Image image = Img.decodeImage(bytes);
    Img.Image transparentImage = await colorTransparent(image, 255, 255, 255);
    var newPng = Img.encodePng(transparentImage);
    return newPng;
  }

Future<Img.Image> colorTransparent(Img.Image src, int red, int green, int blue) async {
  var pixels = src.getBytes();
  for (int i = 0, len = pixels.length; i < len; i += 4) {
    if(pixels[i] == red
        && pixels[i+1] == green
        && pixels[i+2] == blue
    ) {
      pixels[i + 3] = 0;
    }
  }

  return src;
}

Flutter相关问答推荐

如何解决这个错误,同时获得的高度的小部件,因此高度的可用工作区域在Flutter ?

如何更新文本字段的基础上的选定下拉菜单?

创建后检索FiRestore文档ID

在setState之后,Ffltter ListView.Builder未更新

Flutter 应用程序中的Firebase实时数据库中的orderByChild()不适用于我

在框中保存对象列表时,类型推断无法正常工作

Flutter 数独网格

在 flutter 吧蜂巢中拯救主题

Wired Firebase错误-[CLOUD_FIRESTORE/UNAvailable]该服务当前不可用

使用 Firebase Realtime 实现高效流式传输

Flutter Web Dio XMLHttpRequest 上传大文件时出错

在我使用 flutter_riverpod stateprovider 重新保存代码之前,UI 主题状态不会更新

输入处于活动状态时如何设置文本字段标签的样式?

如何使这种相机叠加在Flutter 中?

面对Flutter 中的行和列问题

为什么将 bloc 提供程序放在单独的文件/类中会引发错误?

如何从 Firebase `get()` 获取 `DocumentReference`

如何在 Flutter 中创建 Facebook 创建帖子屏幕?

Firebase Cloud Messaging (Flutter):订阅主题时出现错误消息

Flutter - 检测手指何时进入容器