Strech图像使用Magick.NET填充透明背景

时间:2017-03-17 01:17:21

标签: c# image imagemagick magick.net

我有一张图片(附件)。 enter image description here

我想要将图像拉伸以覆盖黄色区域。

我正在使用c#,magick.net

什么是最好的方法?

1 个答案:

答案 0 :(得分:3)

我建议采用以下方法:

  1. 读取保存原始尺寸的输入图像
  2. 使用trim
  3. 删除透明*区域
  4. 将(现在较小的)图像拉伸到原始尺寸
  5. *如果示例图片中的黄色区域实际上是透明的,您可以在以下代码中留下fuzz = 0,否则您必须调整该值以确保删除所有不需要的区域。< / p>

    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);
    }
    

    在下图中,您可以看到左侧的原始图像,以及右侧调整大小后的图像:

    enter image description here

    备注

    1. Trim删除图片角落中具有相同颜色像素的任何边框(有关详细信息,请参阅here
    2. 由于样本图片中的黄色边框不是由单一颜色组成,因此您可以使用Fuzz删除&#34;类似的&#34;颜色(更多信息here)。如前所述,如果您的边框是透明的,请离开fuzz = 0