使用 Magick.NET 拉伸图像以填充透明背景
Strech image to fill the transparent background using Magick.NET
我有一张图片(已附上)。
我希望图片被拉伸以覆盖黄色区域。
我正在使用 C#,magick.net
最好的方法是什么?
我提出以下方法:
- 读取输入图像保存原始大小
- 使用
trim
删除透明*区域
- 将(现在变小的)图像拉伸到原始大小
*如果示例图像中的黄色区域实际上是透明的,您可以在以下代码中保留 fuzz = 0
,否则您必须调整该值以确保删除所有不需要的区域。
string srcImageFullPath = "c:\input.png";
int fuzz = 0;
string destImageFullPath = "c:\output.png";
// Read image from file
using (MagickImage image = new MagickImage(srcImageFullPath))
{
//save height/width of the original image
int height = image.Page.Height;
int width = image.Page.Width;
//set fuzz percentage
image.ColorFuzz = new ImageMagick.Percentage(fuzz);
//trim borders
image.Trim();
//resize image to original size
MagickGeometry size = new MagickGeometry(width, height);
size.IgnoreAspectRatio = true;
image.Resize(size);
// Save the result
image.Write(destImageFullPath);
}
下图中左边是原图,右边是调整后的图:
备注
我有一张图片(已附上)。
我希望图片被拉伸以覆盖黄色区域。
我正在使用 C#,magick.net
最好的方法是什么?
我提出以下方法:
- 读取输入图像保存原始大小
- 使用
trim
删除透明*区域 - 将(现在变小的)图像拉伸到原始大小
*如果示例图像中的黄色区域实际上是透明的,您可以在以下代码中保留 fuzz = 0
,否则您必须调整该值以确保删除所有不需要的区域。
string srcImageFullPath = "c:\input.png";
int fuzz = 0;
string destImageFullPath = "c:\output.png";
// Read image from file
using (MagickImage image = new MagickImage(srcImageFullPath))
{
//save height/width of the original image
int height = image.Page.Height;
int width = image.Page.Width;
//set fuzz percentage
image.ColorFuzz = new ImageMagick.Percentage(fuzz);
//trim borders
image.Trim();
//resize image to original size
MagickGeometry size = new MagickGeometry(width, height);
size.IgnoreAspectRatio = true;
image.Resize(size);
// Save the result
image.Write(destImageFullPath);
}
下图中左边是原图,右边是调整后的图:
备注