dart 如何在Flutter中完全去除网络图像中的透明背景

3okqufwl  于 2023-05-20  发布在  Flutter
关注(0)|答案(2)|浏览(224)

我必须删除透明背景,需要创建一个新的图像,并成功加载图像
这是我的代码
请让我知道我如何才能实现这一点

Image.network(
  "https://i.pinimg.com/474x/ca/4c/6b/ca4c6be8d049a58b46f9a52b2d69d764.jpg",
 )
rjee0c15

rjee0c151#

要隐藏透明背景,您只需将Image.network小部件放入Container中。然后,您可以按照您想要的方式对背景进行着色或造型。
然而,在您的情况下,图像的链接不是透明背景。背景具有与透明背景相同的指示,但它实际上是图像的一部分,而不是真正透明的。透明图像需要采用.png或.gif格式或其他格式,但不采用. jpg格式。JPG图像不能保持图像的透明度,您可以在这里阅读更多关于Transparent background in JPEG image
这是你的图像实际上看起来的样子,它没有透明的背景:

这是一个真实的透明背景的例子:https://www.lunapic.com/editor/premade/transparent.gif

dfddblmv

dfddblmv2#

如果要在Flutter中从Network Image中删除透明背景,可以使用DecorationImage小部件中的color属性,该属性允许您设置图像的背景颜色。这将有效地用您选择的颜色填充任何透明区域。
下面是一个如何实现的示例:

Container(
  decoration: BoxDecoration(
    image: DecorationImage(
      image: NetworkImage('https://your-image-url.com'),
      colorFilter: new ColorFilter.mode(Colors.white, BlendMode.dstOver),
      fit: BoxFit.cover,
    ),
  ),
)

在这段代码中,使用ColorFilter.mode(Colors.白色,BlendMode.dstOver)将图像中的透明像素替换为白色像素。您可以将Colors.白色替换为您希望用作背景的任何颜色。
注意:BlendMode.dstOver将在源图像(上面的图像)上显示目标图像(下面的图像),这允许颜色过滤器作为背景。如果希望颜色过滤器作为覆盖,请使用BlendMode.srcOver。
请记住,此解决方案不会“删除”透明背景,它只会用您选择的颜色覆盖它。如果你想完全去除图像的透明背景,你必须在Flutter之外使用Photoshop或GIMP等工具,或者使用服务器端解决方案来完成。

相关问题