car*_*ra_ 5 c# imagemagick imagemagick.net magick.net uwp
我需要将 JPG 图像转换为 PNG 并将其白色背景更改为透明。我正在使用 ImageMagick.NET,并且发现以下 ImageMagick 命令应该可以实现我想要实现的目标:
convert image.jpg -fuzz XX% -transparent white result.png
Run Code Online (Sandbox Code Playgroud)
我尝试将其转换为 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");
}
Run Code Online (Sandbox Code Playgroud)
任何形式的帮助将不胜感激。谢谢你!!
这是一个迟到的回复,因为我自己花了一段时间才找到答案,但这似乎对我很有效。查看为“背景”属性分配“透明”值的位置。
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");
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我想将其发送到 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
Run Code Online (Sandbox Code Playgroud)
然后在 UWP Image 元素上,只需使用:
imageElement.Source = bitMapImage;
Run Code Online (Sandbox Code Playgroud)
命令行上的大多数参数都是 MagickImage 类的属性或方法。您的命令将翻译为:
using (var img = new MagickImage("image.jpg"))
{
// -fuzz XX%
img.ColorFuzz = new Percentage(10);
// -transparent white
img.Transparent(MagickColors.White);
img.Write("image.png");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6895 次 |
| 最近记录: |