2012-01-20 21 views
33

Attualmente sto lavorando su un'applicazione che richiede la conversione ad alte prestazioni di un array di byte non imbottito su PNG o JPEG. Il formato dell'immagine non ha importanza, purché sia ​​veloce.Conversione di un array di byte in PNG/JPG

Ho provato le librerie .NET e le prestazioni sono pessime. Qualcuno può raccomandare una buona libreria freeware per questo?

EDIT: il byte [] è una bitmap in scala di grigi 8bit

+0

Non è chiaro cosa intendi: che cos'è questo array di byte per iniziare? Potresti fornire maggiori dettagli? –

+0

La tua domanda non è completamente chiara. Cosa rappresenta il byte [] '? È il contenuto dell'immagine reale? È una bitmap non compressa che vuoi salvare come JPG/PNG? – vcsjones

risposta

55

Si dovrebbe essere in grado di fare qualcosa di simile:

byte[] bitmap = GetYourImage(); 

using(Image image = Image.FromStream(new MemoryStream(bitmap))) 
{ 
    image.Save("output.jpg", ImageFormat.Jpeg); // Or Png 
} 

Cercare here per maggiori informazioni.

Speriamo che questo aiuti.

+1

+1 ... praticamente il modo usuale di farlo. A seconda dei requisiti dell'utente, tuttavia, non è necessario salvarlo nel file system. –

+0

Perfetto. Lo adoro! Questo era esattamente ciò che stavo cercando. –

+2

Ciao, sto provando la stessa cosa per convertire l'immagine grezza in jpeg butgetting * Il parametro non è valido * eccezione. Qualche idea? 'byte [] bytes = System.IO.File.ReadAllBytes (@" C: \ Input.CR2 "); utilizzando (Immagine image = Image.FromStream (nuovo MemoryStream (byte))) { image.Save (@ "C: \ output.jpg", ImageFormat.Jpeg); } ' –

0
+0

So che questo è per l'utilizzo della libreria di programmazione, ma quale sarebbe la riga di comando per lo strumento in quel caso? – user2284570

+0

@ user2284570 Se lo si utilizza sulla riga di comando, si lavorerebbe con un file e non con un array di byte. Supponendo che il tuo input sia PNG (una firma PNG seguita da blocchi), allora 'convert input.png output.jpg' probabilmente funzionerebbe. – ahoffer

1

Ci sono due problemi con questa domanda:

a patto di avere una bitmap in scala di grigi, si hanno due fattori da considerare:

  1. Per JPGS ... che perdita di qualità è tollerabile ?
  2. Per i png ... quale livello di compressione è tollerabile? (Anche se per la maggior parte delle cose che ho visto, non hai molta scelta, quindi questa scelta potrebbe essere trascurabile.) Per chiunque pensi che questa domanda non ha senso: sì, puoi cambiare la quantità di compressione/numero di passaggi tentati di comprimere; dai un'occhiata a Ifranview o ad alcuni dei suoi plugin.

Rispondere a queste domande, quindi è possibile trovare la risposta originale.

Problemi correlati