Flutter如何去除图片背景

问题描述 投票:0回答:1

我需要删除所有三个平台 Android、IOS 和 Web 上的 flutter 中的图像背景。

例如:我有来自画廊或相机的图像,需要使背景透明。

任何人都知道如何在没有 SDK 或任何第三方 API 的情况下做到这一点。 截至目前,我正在使用“https://www.remove.bg/”,但它太大了

紧急请帮忙。

flutter image dart image-processing background-image
1个回答
0
投票

我有一个解决方案,但仅适用于“白色”像素。如果由于某些原因您不想删除白色像素,请查看第二部分。

  1. 替换像素

首先在

image
上安装
pubspec.yaml
软件包:

dependencies:
  flutter:
    sdk: flutter
  image: ^3.0.8

以下功能有效:

import 'dart:io';
import 'package:image/image.dart' as img;

void makeTransparentBackground(File imageFile) {
  img.Image image = img.decodeImage(imageFile.readAsBytesSync())!;

  int white = img.getColor(255, 255, 255, 255);

  for (int y = 0; y < image.height; y++) {
    for (int x = 0; x < image.width; x++) {
      if (image.getPixel(x, y) == white) {
        image.setPixelRgba(x, y, 0, 0, 0, 0);
      }
    }
  }
  File('imgNoBg.png')..writeAsBytesSync(img.encodePng(image));
}
  1. 删除.bg Api

我认为这是最好的选择,你可以在这里查看remove.bg的文档:https://www.remove.bg/fr/api

© www.soinside.com 2019 - 2024. All rights reserved.