Che tipo devo usare per salvare le immagini utilizzando C #?
Domanda
Ho questa classe denominata Eroe che ha i seguenti attributi. String è per le lettere, int per i numeri, ecc Cosa posso usare se ho intenzione di essere il salvataggio di un'immagine lì?
public class Hero
{
[Hero class's attributes (non-image related]
public byte[] Portrait { get; set; }
public byte[] Screenshot { get; set; }
}
Ritratto e Schermata stanno per essere .png o .jpg file. Dovrei usare un [] array di byte per loro? Sono un po 'confuso.
LOL, non importa. Ho capito il mio errore. Ho dovuto usare System.Windows.Media.Imaging. Vai a capire.
Soluzione
ho intenzione di essere li utilizzano solo per mostrare loro in un form WPF.
BitmapImage è buono per le applicazioni XAML based, o un'altra classe derivata di BitmapSource può essere più appropriato per le vostre esigenze, altrimenti solo una pianura vecchio Bitmap .
Altri suggerimenti
C'è un vero e proprio classe Bitmap . Vi consiglierei vivamente di non utilizzare una matrice Byte per esso che potrebbe essere danneggiato e si invaliderebbe l'immagine. Se hai tenuto in un oggetto bitmap, è possibile passare direttamente l'oggetto al controllo PictureBox e rendere sullo schermo.
Additonally, a differenza del BMP PNG [supponendo] e JPG Non conservare il formato di pixel nello stesso modo o di rappresentanza. JPG fa modello di raccordo [all'interno di blocchi] (dove ottiene alcuni dei suoi risparmi e perde informazioni) e memorizza la rappresentazione del modello, invece di valori di colore diretti.
System.Drawing.Bitmap
http://msdn.microsoft.com/en -us / library / system.drawing.bitmap.aspx
Come hai intenzione di essere li utilizzano? Il Immagine classe potrebbe essere più appropriato. Bitmap potrebbe essere un altro buon compromesso.
EDIT:
Allora ti consigliamo di utilizzare un BitmapImage . Vedi SO 94.456 per qualche utilizzo.
Dipende:
- Se avete bisogno di manipolare l'immagine (ruotare, scalare, ecc), quindi utilizzare Bitmap (o la sua classe base "nofollow noreferrer" - Immagine ).
- Se si memorizzano solo per passare l'immagine di client (UI), allora:
- Per applicazione web uso matrice di byte in modo che possa essere reso direttamente al flusso di risposta.
- Per l'applicazione WPF utilizzare quello che è facile da associare a (che può essere BitmapImage , vedi domanda relativa ).