【发布时间】: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