Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF: Salvare immagini in vari formati

In Windows Presentation Foundation  ci sono metodi diversi per leggere e scrivere file di immagine, rispetto a quanto eravamo abituati a fare in Windows Forms, messi a disposizione dal namespace System.Windows.Media.Imaging. In questo esempio vediamo come creare un file Png a partire da una bitmap esistente. Questo è il codice da utilizzare, che poi commenteremo:

Visual Basic:

Dim bitmap As New BitmapImage(New Uri("Immagine.bmp"))

Dim encoder As New PngBitmapEncoder

encoder.Frames.Add(BitmapFrame.Create(bitmap))

Dim pngImage As New IO.FileStream("Immagine.png", IO.FileMode.Create)

encoder.Save(pngImage)

pngImage.Flush()
pngImage.Close()

Visual C#:

BitmapImage bitmap=new BitmapImage(new Uri("Immagine.bmp"));
            
PngBitmapEncoder encoder=new PngBitmapEncoder();

encoder.Frames.Add(BitmapFrame.Create(bitmap));

System.IO.FileStream pnImage=new System.IO.FileStream("Immagine.png",System.IO.FileMode.Create);

encoder.Save(pngImage);

pngImage.Flush();
pngImage.Close();

Tramite l'oggetto BitmapImage si carica in memoria l'immagine esistente, che può essere in uno dei consueti formati supportati. Entra in gioco, poi, il concetto di Encoder, oggetti, quindi, che consentono la codifica dell'immagine nel formato desiderato. Esistono diversi tipi di Encoder, ciascuno a seconda del formato di immagine desiderato (BmpBitmapEncoder, JpegBitmapEncoder, TiffBitmapEncoder, GifBitmapEncoder e WbmpBitmapEncoder).

Nell'Encoder, l'immagine è rappresentata come un fotogramma (Frame). Nel caso di immagini classiche come bitmap, JPeg e Png si deve codificare un solo fotogramma, come nell'esempio. Nel caso di formati come Tiff e Gif, è possibile aggiungere più fotogrammi (pensate alle Tiff multipagina o alle Gif animate) utilizzando la collection Frames.

Fatto questo, si istanzia un nuovo stream per la scrittura del file su disco. Il metodo Save degli Encoder memorizza l'immagine nello stream, che va poi chiuso con i suoi metodi Flush e Close.

Ovviamente, questo è solo un semplice esempio. E' possibile impostare molte altre proprietà, come per esempio il livello di compressione per taluni formati. Per il momento, siete venuti a conoscenza di una cosa nuova in WPF :-)

Alessandro

Print | posted on martedì 13 novembre 2007 21:11 | Filed Under [ Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET