在C#中,如何将.png文件合并为一个.png文件

在C#中,如何将.png文件合并为一个.png文件,c#,.net,C#,.net,我正在抓拍网页的截图。然后将其保存在一个.png文件中,并将此文件合并到一个最终的.png文件中。 我可以将第一个.png文件保存到最终的.png文件中,但对于第二个.png文件及以后的文件,它们不会合并 这是我的密码。else块不工作:( lastappend是一个整数,它随着程序截图的增加而增加 ********************************* Code ************* string fileName = "Funds"; Bitmap bmpScreensh

我正在抓拍网页的截图。然后将其保存在一个.png文件中,并将此文件合并到一个最终的.png文件中。 我可以将第一个.png文件保存到最终的.png文件中,但对于第二个.png文件及以后的文件,它们不会合并

这是我的密码。else块不工作:( lastappend是一个整数,它随着程序截图的增加而增加

 ********************************* Code *************
string fileName = "Funds";
Bitmap bmpScreenshot;
         Graphics gfxScreenshot;

              bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);

                   gfxScreenshot = Graphics.FromImage(bmpScreenshot);

                   gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

bmpScreenshot.Save("C:\\Test\\Images\\Temp\\Image" +lastAppend+ ".Png", ImageFormat.Png); 

   Image img1 = Image.FromFile(Constants.testImagePath + "Image" + lastAppend + ".Png");

   string mergedScreenShot = (Constants.testImagePath + fileName + ".Png"); // Here constants.testimagepath is C:\\Test\\Images\\Temp\\Image

       if (lastAppend == 1)
       {

           bmpScreenshot.Save(Constants.testImagePath + fileName + ".Png");

          img1.Dispose();

       }

       else
       {

           Image mergeimg = Image.FromFile(mergedScreenShot);

                  int  width = mergeimg.Width;
           int height = mergeimg.Height;
        Bitmap img3 = new Bitmap(width, height);       // setting bitmap object of the merged file
           Graphics g = Graphics.FromImage(img3);           
           g.DrawImage(img1, new Point(width, height));
           g.Save();

           img3.Save(mergedScreenShot);
           img1.Dispose();
           g.Dispose();
           img3.Dispose();

       }

 *********** End of code ***************

最有可能的解决方案是通过使用找到的。有一些工作需要使用.NET包装器

另一个选项是,您只需在服务器上为自己调用ImageMagick可执行文件:

  • 将图像写入磁盘
  • 用于使用相关标志执行程序
  • 收集要返回的已处理图像或其他内容

  • 它在做什么?你期望它做什么?你有错误吗?它崩溃了吗?等等。基本上说“它不工作”是没有帮助的,因为我甚至不知道你所说的“合并”是什么意思我制作了一个最终文件,在其中我一个接一个地复制所有屏幕截图。使用“合并”,我的意思是将当前.png文件复制到最终文件中上一个文件的旁边。。在“其他”块中,代码不要将当前.png文件复制到最终文件中…在层中相互重叠?或者您打算安排吗它们是水平的还是垂直的,图像的大小应该增长到可以容纳的程度?我不知道合并是什么意思。如果你只是简单地把它写在原稿上(这就是你的代码看起来的样子),一个屏幕截图通常没有透明度,因此您不会看到多个图像。我仍然不知道您的意思。我正在尝试水平地一个接一个地添加.png文件…那么,您不应该将新合并的图像初始化为与原始图像相同的宽度和高度。您需要根据合并的宽度和高度增加宽度idth。此外,您不希望在点
    宽度,高度
    处绘制,而是要在点
    宽度,0
    处绘制,否则将其斜放在原始点下方。