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

3
我正在使用以下代码通过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);

我曾经在Stack Overflow上搜索类似的内容,但没有找到。显然MagickImage.NET库没有很好的支持。如果您认为这个方法无用,除此之外还有哪些可用的方法呢?点这里

1个回答

1

这行代码return imagecoll.ToByteArray();似乎出了问题,这个图片是一个多页的tiff格式的图片,返回的字节数组长度与添加到tiff图片中的图片相比太小了。我找到了一个重载方法,它接受图像格式作为参数,并使用MagickFormat枚举,根据我的情况,我使用了MagickFormat.Tiff


1
当您不指定格式时,它将使用原始图像的格式,即JPEG格式,而该格式不支持多层。这就是为什么您只能得到第一张图像的原因。(附注:您可以直接将字节数组写入磁盘) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接