2

これは、バイト[]配列を画像に変換する私のコードです

unsafe
{
  //convert the UInt32[] into byte array and then assign the pointer to it
  fixed (byte* ptr = Misc.ConvertFromUInt32Array(image)) 
  {
    Bitmap bmp = new Bitmap(200,64,800,
      PixelFormat.Format32bppRgb,
      new IntPtr(ptr));
    bmp.Save("test.bmp");
  }
}

そして、私はこれを取得します:

代替テキスト http:////img11.imageshack.us/img11/4853/testacr.png

コードのどこに問題があるのですか?なぜそれが起こるのですか? どうやって元に戻すの?

4

3 に答える 3

8
   bmp.RotateFlip(RotateFlipType.Rotate180FlipX);

問題を修正しました:)

于 2009-04-13T04:42:35.840 に答える
1

あなたが投稿した2つの画像はまったく関係がないようです(さらに、同様の難読化パターンがあります)。間違ったファイルを投稿しましたか?

あなたが見ている問題に関しては、xy 軸の原点に問題があると思います。通常の画像とグラフィックス API は、y 軸を「下に」数える、少し変わった軸を使用します。つまり、ポイント (0, 0) は画面の左上にあり、y をインクリメントすると、下に移動します。画面。したがって、変換を間違えたか、2 つの画像が異なる y 軸スキームを使用していると考えるのが妥当と思われます。

于 2009-04-13T04:31:27.130 に答える
1

安全でないものをすべて次のものに置き換えてみませんか。

private static Bitmap ConvertFromBytes(Byte[] imagebytes)
{
   return new Bitmap(new MemoryStream(imagebytes));
}
于 2009-04-13T04:52:34.880 に答える