Ridimensionare immagini e salvarle in un array di byte

venerdì 10 ottobre 2008 - 10.56

adima80 Profilo | Junior Member

Ciao, devo fare una routine che ridimensiona un pò di immagini e le sbatte in un campo image di un db. Procedo così:

public byte[] RidimensionaImg(string path) { Image imgOriginale = Image.FromFile(path); Bitmap bmp = new Bitmap(imgOriginale, new Size(640, 480)); ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Jpeg); byte[] img = new byte[ms.Lenght]; ms.Read(img, 0, img.Lenght); return img; }

Il problema è che non riesco a buttare quello che c'è dentro al MemoryStream all'array di byte, infatti dopo l'operazione img ha tutte le sue posizioni a 0; se controllo il contenuto del MemoryStream vedo che non è vuoto.

Come mai? sbaglio ad usare il memoryStream???

Grazie, ciao!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SCUSATE, HO APPENA RISOLTO!!! BASTA FARE COSi':
... return ms.ToArray();

CHE VERGOGNA, ERA COSI' SEMPLICE!
IL POST LO LASCIO X' POTREBBE SERVIRE A QUALCUNO E X' NN SO COME CANCELLARLO!!!!

aiedail92 Profilo | Expert

Ciao

Anche la prima soluzione andava bene, non funzionava solo perchè il MemoryStream era alla fine del flusso (dopo aver scritto i dati), quindi per farlo funzionare avresti dovuto aggiungere un'istruzione MemoryStream.Seek(0, SeekOrigin.Begin):

Image imgOriginale = Image.FromFile(path); Bitmap bmp = new Bitmap(imgOriginale, new Size(640, 480)); MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Jpeg); byte[] img = new byte[ms.Length]; ms.Seek(0, SeekOrigin.Begin); ms.Read(img, 0, img.Length); return img;

Luca

adima80 Profilo | Junior Member

Grazie per la dritta!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5