C# 剪辑图像

C# 剪辑图像,c#,image,image-processing,clip,C#,Image,Image Processing,Clip,我有以下代码来处理流中的图像。我的目的是选择它的一个子区域,并将其调整为100x100。我事先不知道图像的格式 var image = new Bitmap(stream); var destArea = new Rectangle(0, 0, 100, 100); var srcArea = new Rectangle(x, y, width, height); var gfx = Graphics.FromImage(image); gfx.DrawImage(image, destAr

我有以下代码来处理流中的图像。我的目的是选择它的一个子区域,并将其调整为100x100。我事先不知道图像的格式

var image = new Bitmap(stream);

var destArea = new Rectangle(0, 0, 100, 100);
var srcArea = new Rectangle(x, y, width, height);

var gfx = Graphics.FromImage(image);
gfx.DrawImage(image, destArea, srcArea, GraphicsUnit.Pixel);

var ms = new MemoryStream();
image.Save(ms, image.RawFormat);
出于某种原因,这是采取我想要的分区,调整它的大小,并把它放在原始图像的顶部,这样的结果是原始和我想要的结果的混合

我已经阅读了好几篇关于图像处理的指南和帖子,但我仍然不知道我到底错在哪里。你介意帮我吗

另外,如果您能向我解释一下我遗漏了什么(代码背后的一点理论),我将非常感激


谢谢

如果要调整图像的大小,则需要一个新的图像对象,将调整大小的图像放入其中。您缺少的是创建新的100x100映像。下面是代码的外观:

var image = new Bitmap(stream);
var destArea = new Rectangle(0, 0, 100, 100);
var srcArea = new Rectangle(x, y, width, height);

// Destination image
var destImage = new Bitmap(destArea.Width, destArea.Height);

var gfx = Graphics.FromImage(destImage);
gfx.DrawImage(image, destArea, srcArea, GraphicsUnit.Pixel);

var ms = new MemoryStream();
destImage.Save(ms, image.RawFormat);

我还建议使用语句将所有GDI+对象包装在
中,因为它们通常不能很好地处理垃圾收集。

如果要调整图像大小,则需要一个新的图像对象,将调整大小的图像放入其中。您缺少的是创建新的100x100映像。下面是代码的外观:

var image = new Bitmap(stream);
var destArea = new Rectangle(0, 0, 100, 100);
var srcArea = new Rectangle(x, y, width, height);

// Destination image
var destImage = new Bitmap(destArea.Width, destArea.Height);

var gfx = Graphics.FromImage(destImage);
gfx.DrawImage(image, destArea, srcArea, GraphicsUnit.Pixel);

var ms = new MemoryStream();
destImage.Save(ms, image.RawFormat);

我还建议使用
语句将所有GDI+对象包装在
中,因为它们通常不能很好地处理垃圾收集。

非常感谢。我想我仍然对不同的参数含义感到困惑(例如,为什么gfx是从Destinmage创建的,但它绘制图像)。我需要更深入地了解文档。谢谢别担心。gfx是一个绘制到目标图像中的对象,因此当您调用DrawImage(图像,…)时,您正在将图像的内容绘制到目标图像中。非常感谢。我想我仍然对不同的参数含义感到困惑(例如,为什么gfx是从Destinmage创建的,但它绘制图像)。我需要更深入地了解文档。谢谢别担心。gfx是一个绘制到目标图像中的对象,因此当您调用DrawImage(图像,…)时,您正在将图像的内容绘制到目标图像中