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

时间:2013-01-29 16:07:08

标签: c# image bitmap resize

我正在开发一个程序,我需要将图像放在另一个图像的顶部。然而,发生的事情是当我将图片放在背景之上时,它会变成不同的分辨率,我不知道为什么。我已经尝试过使用比特深度和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);

1 个答案:

答案 0 :(得分:5)

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

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

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