C#应用程序更改我的图片大小

C#应用程序更改我的图片大小,c#,image,bitmap,resize,C#,Image,Bitmap,Resize,我正在做一个程序,我需要把一个图像放在另一个图像上。然而,当我把图片放在背景上时,它会被改变成不同的分辨率,我不知道为什么。我试过在比特深度和DPI上乱搞,但两者都没什么区别。我的原始图像是574x574,但当它放在图片上时,它变成了768x768。这是我正在使用的代码。感谢您的帮助 Image imgBackground = Image.FromFile(r_strApplicationStartupPath + "\\images\\Backing.png"); Image imgPictu

我正在做一个程序,我需要把一个图像放在另一个图像上。然而,当我把图片放在背景上时,它会被改变成不同的分辨率,我不知道为什么。我试过在比特深度和DPI上乱搞,但两者都没什么区别。我的原始图像是574x574,但当它放在图片上时,它变成了768x768。这是我正在使用的代码。感谢您的帮助

Image imgBackground = Image.FromFile(r_strApplicationStartupPath + "\\images\\Backing.png");
Image imgPicture1 = Image.FromFile(r_strApplicationStartupPath + "\\images\\Picure1.png");
Image TempImg = Image.FromFile(r_strApplicationStartupPath + "\\images\\Backing.png");
Graphics grfx = Graphics.FromImage(TempImg);
Bitmap bmpFinal = new Bitmap(1296, 1944, PixelFormat.Format32bppArgb);
grfx = Graphics.FromImage(bmpFinal);
grfx.DrawImage(imgBackground, 0, 0);
grfx.DrawImage(imgPicture1, 659, 1282);
bmpFinal.Save(r_strApplicationStartupPath + "\\images\\" + r_strName + " Composite " + r_intCounter.ToString() + ".png", ImageFormat.Png);

在不指定目标矩形的情况下调用Graphics.DrawImage时,它假定您希望保留图像的原始物理大小(即英寸而不是像素),因此将根据源图像和目标图像的DPI调整图像的大小

如果要确保在不调整DPI的情况下以原始像素大小绘制图像,则只需提供整个目标矩形

grfx.DrawImage(imgPicture1, dstRect, srcRect, GraphicsUnit.Pixel);

哪个图像是574x574?另外,最初在第4行创建grfx,然后在2行之后覆盖该对象。我认为根本不需要TempImg或者初始的Graphics.FromImage(TempImg)。尽量保持你的代码简洁,这样就不会有无关的代码掩盖问题。另外,你能把这3张图片(两张起始图片和最终图片)放在某个地方(一些公共图片托管网站)并发布链接到它们吗?这可能会有帮助。第二个参数必须是矩形,而不是点。这就解决了它。非常感谢你。