web-dev-qa-db-ja.com

ビットマップから画像ボックスに画像を入れる方法

ディスクに保存せずにメモリ(_byte[]_またはstreamまたはBitmap)から画像をロードすることは可能ですか?

これは、_byte[]_配列をBitmapに変換するために使用するコードです。

_unsafe
{
    fixed (byte* ptr = Misc.ConvertFromUInt32Array(image))
    {
        Bitmap bmp = new Bitmap(200, 64, 800, PixelFormat.Format32bppRgb, new IntPtr(ptr));
        bmp.RotateFlip(RotateFlipType.Rotate180FlipX);
        bmp.MakeTransparent(Color.Black);
        bmp.Save("test.bmp");
    }
}
_

Bmp.save()を使用する代わりに、フォームの画像ボックスにBitmapを配置できますか?

23
Ivan Prodanov

これを試しましたか?

pictureBox.Image = bmp;
53
ChrisF

メモリリークの原因となる、受け入れられた答えに似たコードがいくつかありました。問題は、ピクチャボックスの画像をビットマップに設定するとき、コピーを作成するのではなく、ビットマップを参照しているということです。画像を複数回設定する必要がある場合は、すべての古いビットマップを破棄していることを確認する必要があります。

これは、clone画像ボックスへのビットマップを探している人向けです。これを試して:

if (pictureBox.Image != null) pictureBox.Image.Dispose();
pictureBox.Image = myBitmap.Clone(
    new Rectangle(0, 0, myBitmap.Width, myBitmap.Height), 
    System.Drawing.Imaging.PixelFormat.DontCare);
3
JSideris

C++プログラミング言語を使用している場合、次のように実行できます。

void backGroundImage()
{
    Image^ back = gcnew Bitmap("C:\\Users\\User\\Documents\\image.bmp");
    pictureBox1->BackGroundImage = back;
};

その後、ビットマップをロードする必要があるときにbackGroundImageを呼び出すことができます。

0
r.mirzojonov