2009-04-13 15 views
19

È possibile caricare un'immagine dalla memoria (byte[] o stream o Bitmap) senza salvarla sul disco?Come inserire un'immagine in una finestra immagine da Bitmap

Questo è il codice che uso per trasformare la matrice byte[] in un 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"); 
    } 
} 

Invece di usare Bmp.save(), posso mettere la Bitmap nella casella di immagine sulla mia forma?

risposta

41

Hai provato questo?

pictureBox.Image = bmp; 
+0

ho appena fatto e ha funzionato bene, grazie! –

0

Se si lavora con il linguaggio di programmazione C++, si può fare in questo modo:

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

quindi è possibile chiamare backGroundImage quando è necessario caricare una bitmap.

3

Avevo un codice simile alla risposta accettata che causava una perdita di memoria. Il problema è che quando si imposta l'immagine della casella immagine sulla bitmap, si sta ancora facendo riferimento alla bitmap, invece di creare una copia. Se è necessario impostare l'immagine più volte è necessario assicurarsi di smaltire tutte le vecchie bitmap.

Questo è per chiunque stia cercando di clone un bitmap a una casella di immagine. Prova questo:

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

Grazie. Cercando di usare la bitmap senza clonarla si stava creando un'eccezione nel System.Drawing.Dll. L'utilizzo del tuo suggerimento .Clone ha risolto il problema per me! – saurabhj

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

Potete fornire ulteriori dettagli su come dovrebbe funzionare? – jotik

Problemi correlati