gpt4 book ai didi

c# - 使用 ImageMagick.Net 将 JPG 转换为背景透明的 PNG

转载 作者:行者123 更新时间:2023-11-30 15:18:06 35 4
gpt4 key购买 nike

我需要将 JPG 图像转换为 PNG 并将其白色背景更改为透明。我正在使用 ImageMagick.NET,我发现以下 ImageMagick 命令应该可以实现我想要实现的目标:

convert image.jpg -fuzz XX% -transparent white result.png

我已经尝试将其转换为 C#,但我得到的只是一个带有白色背景的 png 图像。我的代码片段:

using (var img = new MagickImage("image.jpg"))
{
img.Format = MagickFormat.Png;
img.BackgroundColor = MagickColors.White;
img.ColorFuzz = new Percentage(10);
img.BackgroundColor = MagickColors.None;
img.Write("image.png");
}

我们将不胜感激任何形式的帮助。谢谢!!

最佳答案

这是一个迟到的回复,因为我自己花了一段时间才找到答案,但这似乎对我很有效。查看为 Background 属性分配透明值的位置。

using (var magicImage = new MagickImage())
{
var magicReadSettings = new MagickReadSettings
{
Format = MagickFormat.Svg,
ColorSpace = ColorSpace.Transparent,
BackgroundColor = MagickColors.Transparent,
// increasing the Density here makes a larger and sharper output to PNG
Density = new Density(950, DensityUnit.PixelsPerInch)
};

magicImage.Read("someimage.svg", magicReadSettings);
magicImage.Format = MagickFormat.Png;

magicImage.Write("someimage.png");

}

在我的例子中,我想将它发送到 UWP Image 元素,所以我没有使用 Write(),而是在上述步骤之后执行了以下操作:

                // Create byte array that contains a png file
byte[] imageData = magicImage.ToByteArray();

using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
{
writer.WriteBytes(imageData);
await writer.StoreAsync();
}

await bitmapImage.SetSourceAsync(stream);
}


return bitMapImage; // new BitMapImage() was scoped before all of this

然后在 UWP 图像元素上,只需使用:

imageElement.Source = bitMapImage;

关于c# - 使用 ImageMagick.Net 将 JPG 转换为背景透明的 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44880248/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com