【问题标题】:Parameter is not valid exception showing on Bitmap creating when passing memory stream, only happening on 64-bit server传递内存流时在创建位图时显示的参数无效异常,仅在 64 位服务器上发生
【发布时间】:2024-04-19 19:35:02
【问题描述】:

好吧,之前好像在几个论坛上都问过类似的问题,但最后似乎没有给出任何解决方案。

我得到一个 Base64 字符串,它被转换为字节数组。然后我正在创建位图标题并将其放入内存流中。然后尝试创建 Bitmap 对象传递流。

当我将网站部署到 32 位服务器时,代码运行成功。但在 64 位服务器(windows server 2008 R2)的情况下,它不起作用。

代码如下:

            using (MemoryStream BmpStream = new MemoryStream())
            {
                using (BinaryWriter BitmapWriter = new BinaryWriter(BmpStream))
                {
                    //m_BinaryData is the byte array
                    m_DataOffset = 54 + m_Palette.Count * 4;
                    m_DataSize = m_BinaryData.Length;
                    m_FileSize = m_DataOffset + m_DataSize;

                    //Create 54 bytes long bitmap header
                    ....

                    //Write palette
                    WriteColorTable(BitmapWriter);
                    BitmapWriter.Write(m_BinaryData);
                    BmpStream.Position = 0;                        
                    using (Bitmap TempB = new Bitmap(BmpStream))
                    {
                        m_GifStream = new MemoryStream();
                        m_GifStream.Seek(0, SeekOrigin.Begin);
                        TempB.Save(m_GifStream,    System.Drawing.Imaging.ImageFormat.Gif);
                    } 

注意:我们正在使用 32 位机器 Visual Studio 2010 开发应用程序。 我尝试将平台构建到任何 CPU,但也没有显示任何变化,并且每次都会出现相同的问题。

请帮忙

更新

这种情况只发生在具有调色板、每像素深度为 8 位的图像上。

更新

只有 8bpp 图像才会发生这种情况。使用 1bpp、4bpp、24bpp 图像进行测试,但仅在 8bpp 时发生。 还有一点,我尝试使用所有 256 种颜色创建调色板,并为 8bpp 图像传递相同的颜色,然后不会引发错误。但是创建的图像是全黑的。

与 8bpp 调色板有什么关系??在 x64 机器上也是如此。

【问题讨论】:

  • 您有 .Net Tiff 编解码器吗?服务器上使用的应用程序池是什么?
  • 尚未使用 .NET Tiff 编解码器,因为图像是 gif 类型(需要对此有更多了解)。应用池为framework 2.0,托管流水线模式:集成。

标签: bitmap 64-bit 32bit-64bit color-palette


【解决方案1】:

我找到了答案。调色板包含 Alpha 通道。链接

Similar issue

帮助我找出问题的根本原因。 .NET Bitmap 类似乎无法读取具有 64 位以下 alpha 通道的颜色。解决方法是使用 Aurigma 位图,它(与 .NET 位图不同)可以处理带或不带 Alpha 通道的 CMYK 图像。

【讨论】:

    最近更新 更多