使用MagickImage.NET将图像列表转换为单个Tiff文件

时间:2016-11-17 09:10:25

标签: c# .net imagemagick tiff

我正在使用以下代码使用MagickImage.NET Library从图像列表创建单个tiff文件:

    /// <summary>
    /// Create single tiff file from a list of base64String images
    /// </summary>
    /// <param name="pages">A list of base64String images</param>
    /// <returns>Byte array of the created tiff file</returns>
    public static byte[] CreateSingleTiff(List<string> pages)
    {
        MagickImage pageImage;
        using (MemoryStream byteStream = new MemoryStream())
        {
            using (MagickImageCollection imagecoll = new MagickImageCollection())
            {

                for (int i = 0; i < pages.Count; i++)
                {
                    byte[] newBytes = Convert.FromBase64String(pages[i].Replace("data:image/Jpeg;base64,", ""));
                    pageImage = new MagickImage(newBytes);
                    imagecoll.Add(pageImage);
                }
                return imagecoll.ToByteArray();//The problem occurs right here
            }
        }
    }

但我只是第一页!

这是我用来在磁盘上写图像的行:

Image.FromStream(new MemoryStream(result)).Save(path, System.Drawing.Imaging.ImageFormat.Tiff);

我试图为类似的东西挖掘stackoverflow,但我没有运气。显然没有对MagickImage.NET库的良好支持。如果你看到这个方法没用,那么除了this one

之外的其他可用方法是什么

1 个答案:

答案 0 :(得分:0)

此行return imagecoll.ToByteArray();似乎存在问题,图像是多页tiff图像,并且与添加到tiff图像的图像相比,返回的字节数组的长度太小。我找到了一个重载方法,它使用MagickFormat枚举将图像格式作为参数,在我的例子中,我使用了MagickFormat.Tiff