ディスクに保存せずにメモリ(_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
を配置できますか?
これを試しましたか?
pictureBox.Image = bmp;
メモリリークの原因となる、受け入れられた答えに似たコードがいくつかありました。問題は、ピクチャボックスの画像をビットマップに設定するとき、コピーを作成するのではなく、ビットマップを参照しているということです。画像を複数回設定する必要がある場合は、すべての古いビットマップを破棄していることを確認する必要があります。
これは、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);
C++プログラミング言語を使用している場合、次のように実行できます。
void backGroundImage()
{
Image^ back = gcnew Bitmap("C:\\Users\\User\\Documents\\image.bmp");
pictureBox1->BackGroundImage = back;
};
その後、ビットマップをロードする必要があるときにbackGroundImage
を呼び出すことができます。