0

かなり前に、いくつかのフォーラムで同様の問題が尋ねられたように見えましたが、最終的には解決策が提供されていないようです.

バイト配列に変換された 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マシンで。

4

1 に答える 1