2009-04-13 4 views
19

Est-il possible de charger une image de la mémoire (byte[] ou stream ou Bitmap) sans l'enregistrer sur le disque?Comment mettre une image dans une zone d'image à partir de Bitmap

Voici le code que j'utilise pour transformer le tableau byte[] en 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"); 
    } 
} 

Au lieu d'utiliser Bmp.save(), je peux mettre la Bitmap dans la zone d'image sur mon formulaire?

Répondre

41

Avez-vous essayé?

pictureBox.Image = bmp; 
+0

Je viens de le faire et cela a fonctionné très bien, merci! –

0

Si vous travaillez avec le langage de programmation C++, il peut être fait comme ceci:

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

Ensuite, vous pouvez appeler backGroundImage lorsque vous devez charger une image bitmap.

3

J'ai eu du code ressemblant à la réponse acceptée qui a causé une fuite de mémoire. Le problème est que lorsque vous définissez l'image de la zone d'image à l'image bitmap, vous faites toujours référence à l'image bitmap, plutôt que de créer une copie. Si vous devez définir l'image plusieurs fois, vous devez vous assurer que vous disposez de toutes les anciennes images.

Ceci est pour tous ceux qui cherchent clone une image bitmap à une boîte d'image. Essayez ceci:

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

Merci. Essayer d'utiliser le bitmap sans le cloner lançait une exception dans System.Drawing.Dll. L'utilisation de votre suggestion .Clone a résolu le problème pour moi! – saurabhj

-1
pictureBox.Image = Properties.Resources.image.bmp; 
+0

Pouvez-vous s'il vous plaît fournir plus de détails sur la façon dont cela est censé fonctionner? – jotik

Questions connexes