2009-09-03 16 views
8

Ho un'immagine (in formato .png) e voglio che questa immagine venga convertita in binario.Converti l'immagine in binario?

Come può essere fatto utilizzando C#?

+2

Cosa vuol dire 'convertire in binario'? Intendi, ad esempio, in bianco e nero? – pavium

+1

Potresti spiegarlo un po 'di più? Un'immagine è già binaria. Vuoi decomprimerlo, vuoi accedere ai pixel? –

+0

Devo scrivere i dati binari dell'immagine sullo schermo usando Response.BinaryWrite(); – Martijn

risposta

6

Dal momento che si dispone di un uso del file: -

Response.ContentType = "image/png"; 
Response.WriteFile(physicalPathOfPngFile); 
+0

Come riconvertirlo in Immagine? –

20
byte[] b = File.ReadAllBytes(file); 

File.ReadAllBytes Method

apre un file binario, legge il contenuto del file in un byte matrice, e quindi chiude il file.

+1

A meno che non sia necessario elaborare quell'array prima di inviarlo alla risposta, puoi lasciare che ASP.NET lo gestisca usando WriteFile – AnthonyWJones

11

Prova questo:

Byte[] result 
    = (Byte[])new ImageConverter().ConvertTo(yourImage, typeof(Byte[])); 
3

si potrebbe fare:

MemoryStream stream = new MemoryStream(); 
    image.Save(stream, ImageFormat.Png); 
    BinaryReader streamreader = new BinaryReader(stream); 

    byte[] data = streamreader.ReadBytes(stream.Length); 

dati sarebbero poi contenere il contenuto del Immagine.

+0

Che tipo di dati ha l'immagine? Sto usando Webforms ... – Martijn

+0

System.Drawing.Image – Kazar

0

Innanzitutto, convertire l'immagine in un array di byte utilizzando la classe ImageConverter. Quindi specifica il mime type della tua immagine png e voilà!

Ecco un esempio:

TypeConverter tc = TypeDescriptor.GetConverter(typeof(Byte[])); 
Response.ContentType = "image/png"; 
Response.BinaryWrite((Byte[])tc.ConvertTo(img,tc)); 
0
System.Drawing.Image image = System.Drawing.Image.FromFile("filename"); 
byte[] buffer; 
MemoryStream stream = new MemoryStream(); 
image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); 

buffer = stream.ToArray(); // converted to byte array 
stream = new MemoryStream(); 
stream.Read(buffer, 0, buffer.Length); 
stream.Seek(0, SeekOrigin.Begin); 
System.Drawing.Image img = System.Drawing.Image.FromStream(stream); 
+0

sì, grazie. corretto! –

0
public static byte[] ImageToBinary(string imagePath) 
    { 
     FileStream fS = new FileStream(imagePath, FileMode.Open, FileAccess.Read); 
     byte[] b = new byte[fS.Length]; 
     fS.Read(b, 0, (int)fS.Length); 
     fS.Close(); 
     return b; 
    } 

basta usare sopra il codice Credo che il problema sarà risolto

0
using System.IO; 

FileStream fs=new FileStream(Path, FileMode.Open, FileAccess.Read); //Path is image location 
Byte[] bindata= new byte[Convert.ToInt32(fs.Length)]; 
fs.Read(bindata, 0, Convert.ToInt32(fs.Length));