Image 如何在Dart FLATTER中删除图像周围的空白?
用户向屏幕写入内容,创建图像并发送到我们的平台。每幅图像都是一幅白色背景的图片(手写文本)。我想删除图像的所有白色部分,让用户只写内容。是否可以在颤振中使用图像处理?如果可能,如何处理?您可以在Dart中进行图像处理(颤振只是一个UI框架,图像处理是一种算法,因此与UI无关,而是与语言本身有关) 您可以尝试使用该软件包,打开图像,解码其字节,并在那里应用任何图像处理算法 此库将帮助您提取图像字节,但如果您需要更核心的图像处理算法,如OpenCV中的算法,并且您不太热衷于自己实现这些算法,则可能需要执行以下操作:Image 如何在Dart FLATTER中删除图像周围的空白?,image,flutter,image-processing,dart,transparency,Image,Flutter,Image Processing,Dart,Transparency,用户向屏幕写入内容,创建图像并发送到我们的平台。每幅图像都是一幅白色背景的图片(手写文本)。我想删除图像的所有白色部分,让用户只写内容。是否可以在颤振中使用图像处理?如果可能,如何处理?您可以在Dart中进行图像处理(颤振只是一个UI框架,图像处理是一种算法,因此与UI无关,而是与语言本身有关) 您可以尝试使用该软件包,打开图像,解码其字节,并在那里应用任何图像处理算法 此库将帮助您提取图像字节,但如果您需要更核心的图像处理算法,如OpenCV中的算法,并且您不太热衷于自己实现这些算法,则可能需
不理想,但完全可行。首先,您需要安装软件包 然后使用以下代码删除背景
import 'package:image/image.dart' as Img;
Future<Uint8List> removeWhiteBackgroundFromImage(
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;
}
参考链接:您的意思是要删除所有背景,还是只修剪多余的空白?
Uint8List imageBytes = File(imageFilePath).readAsBytesSync();