用.NET创建大型PNG

时间:2017-12-28 14:43:33

标签: c# .net png

我想从一组PNG中创建一个大的PNG文件(最多25个文件,每个4080 x 800像素)。

我期望的结果是包含所有堆叠图像的单个PNG。

我写了这段代码:

private void PngCreate(List<FileInfo> imageListRef, string basePathPng, string filenamePng, int counter)
{
    if (imageListRef.Count > 0)
    {
        try
        {
            List<int> imageHeights = new List<int>();
            int width = 0;
            int height = 0;

            foreach (FileInfo file in imageListRef)
            {
                System.Drawing.Image img = System.Drawing.Image.FromFile(file.FullName);
                width = img.Width;
                height += img.Height;
                img.Dispose();
            }

            Bitmap bigImage = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(bigImage);

            int y = 0;

            foreach (FileInfo file in imageListRef)
            {
                System.Drawing.Image img = System.Drawing.Image.FromFile(file.FullName);

                g.DrawImage(img, new Point(0, y));
                y += img.Height;

                img.Dispose();
            }
            g.Dispose();

            if (!Directory.Exists(basePathPng))
                Directory.CreateDirectory(basePathPng);

            bigImage.Save(filenamePng, System.Drawing.Imaging.ImageFormat.Png);
            bigImage.Dispose();

        }
        catch (Exception ex)
        {
            debugLogger.Debug(ex.Message);
            throw ex;
        }
    }
}

但是我的内存不足bigImage(4080 x 20000)。 在这种情况下我该怎么办?

我考虑过降低或压缩单张图像的分辨率,但我不知道该怎么做。

我不想失去图像的质量。

0 个答案:

没有答案