将两个图像组合成一个新图像

时间:2011-12-03 23:16:34

标签: c# system.drawing

我正在尝试在.NET中复制imagecopy PHP函数。我有两张图片需要合并为一张新图片。一个图像是模板,我需要将第二个图像放入模板中,然后将结果保存为新文件。这是我到目前为止所做的:

//Sized Image
Bitmap sizedImg = (Bitmap)Image.FromFile(Server.MapPath("~/ImageUploads/") + sizedImageName);
sizedImg.MakeTransparent(Color.White);

//Template Image
Bitmap template = (Bitmap)Image.FromFile(Server.MapPath("~/Assets/img/frame_sm.jpg"));

//Combine the two
Graphics newImage = Graphics.FromImage(template);
newImage.DrawImage(sizedImg, 96, 12, 232, 230);
newImage.Save();

//Save the new image
string fileName =  String.Format("{0}_sizedFB.jpg", originalImageName.Substring(0, originalImageName.IndexOf("_")));
//? Save

首先,这是将两个图像合二为一的正确代码吗?如果是这样,我如何将新图像保存到磁盘?

谢谢。

1 个答案:

答案 0 :(得分:1)

首先,您必须从打开的模板文件中创建新的位图,以便不修改模板,而是根据模板创建新图像。

Bitmap template = (Bitmap)Image.FromFile(Server.MapPath("~/Assets/img/frame_sm.jpg"));
Bitmap newimage = new Bitmap(template);

然后在这个新图像上绘制图像:

Graphics newImage = Graphics.FromImage(newimage);
newImage.DrawImage(sizedImg, 96, 12, 232, 230);

最后,您将新图像保存到给定文件中:

string fileName =  String.Format("{0}_sizedFB.jpg", originalImageName.Substring(0, originalImageName.IndexOf("_")));
newImage.Save(fileName, ImageFormat.Png);