是否可以从内存(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
吗?
答案 0 :(得分:51)
你试过这个吗?
pictureBox.Image = bmp;
答案 1 :(得分:3)
我有一些类似于接受的答案的代码导致内存泄漏。问题是,当您将图片框图像设置为位图时,您仍然指的是位图,而不是创建副本。如果您需要多次设置图像,则需要确保处理所有旧位图。
这适用于那些希望克隆位图到图像框的人。试试这个:
if (pictureBox.Image != null) pictureBox.Image.Dispose();
pictureBox.Image = myBitmap.Clone(
new Rectangle(0, 0, myBitmap.Width, myBitmap.Height),
System.Drawing.Imaging.PixelFormat.DontCare);
答案 2 :(得分:0)
如果您使用的是C ++编程语言,可以这样做:
void backGroundImage()
{
Image^ back = gcnew Bitmap("C:\\Users\\User\\Documents\\image.bmp");
pictureBox1->BackGroundImage = back;
};
然后,当您需要加载位图时,可以调用backGroundImage
。
答案 3 :(得分:-1)
pictureBox.Image = Properties.Resources.image.bmp;