かなり前に、いくつかのフォーラムで同様の問題が尋ねられたように見えましたが、最終的には解決策が提供されていないようです.
バイト配列に変換された Base64 文字列を取得しています。次に、ビットマップ ヘッダーを作成し、それをメモリ ストリームに入れています。次に、ストリームを渡す Bitmap オブジェクトを作成しようとしています。
Web サイトを 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 でのみ発生しています。もう 1 点、256 色すべてのカラー パレットを作成して、8bpp 画像に同じものを渡してみましたが、エラーは発生しませんでした。しかし、作成された画像はすべて黒です。
8bpp カラーパレットと何か関係ありますか?? それもx64マシンで。