【问题标题】:Strech image to fill the transparent background using Magick.NET使用 Magick.NET 拉伸图像以填充透明背景
【发布时间】:2017-08-08 10:09:09
【问题描述】:

我有一张图片(附上)。

我希望图像被拉伸以覆盖黄色区域。

我正在使用 c#,magick.net

最好的方法是什么?

【问题讨论】:

  • 所以你图片中的黄色区域实际上不是黄色,而是透明的?

标签: c# image imagemagick magick.net


【解决方案1】:

我提出以下方法:

  1. 读取输入图像保存原始大小
  2. 使用trim删除透明*区域
  3. 将(现在更小的)图像拉伸到原始大小

*如果您的示例图像中的黄色区域实际上是透明的,您可以在下面的代码中留下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);
}

下图左边是原图,右边是调整大小后的图片:

注意事项

  1. Trim 删除与图像角落像素颜色相同的任何边框(有关详细信息,请参阅here
  2. 由于示例图像中的黄色边框不是由单一颜色组成,您可以使用Fuzz 删除“相似”颜色(更多信息here)。如前所述,如果您的边框是透明的,请留下fuzz = 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 2011-05-26
    • 2011-11-12
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多