0

我有一张图片(附件)。 在此处输入图像描述

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

我正在使用 c#,magick.net

最好的方法是什么?

4

1 回答 1

3

我提出以下方法:

  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删除与图像角落中的像素颜色相同的任何边框(有关详细信息,请参见此处
  2. 由于示例图像中的黄色边框不是由单一颜色组成,您可以使用它Fuzz来删除“相似”颜色(更多信息在这里)。如前所述,如果您的边框是透明的,请离开fuzz = 0
于 2017-03-31T16:08:19.217 回答