2009-09-03 9 views
8

J'ai une image (au format .png), et je veux que cette image soit convertie en binaire.Convertir l'image en binaire?

Comment cela peut-il être fait en utilisant C#?

+2

Que voulez-vous dire «convertir en binaire? Voulez-vous dire, par exemple, en noir et blanc? – pavium

+1

Pourriez-vous l'expliquer un peu plus? Une image est déjà binaire. Voulez-vous qu'il soit décompressé, notre voulez-vous accéder aux pixels? –

+0

Je dois écrire les données binaires de l'image à l'écran en utilisant Response.BinaryWrite(); – Martijn

Répondre

6

Puisque vous avez un emploi du fichier: -

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

Comment le convertir en image? –

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

File.ReadAllBytes Method

ouvre un fichier binaire, lit les contenu du fichier dans un octet réseau , et ferme le fichier.

+1

S'il n'est pas nécessaire de traiter ce tableau avant de l'envoyer à la réponse, laissez ASP.NET le gérer en utilisant WriteFile – AnthonyWJones

11

Essayez ceci:

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

Vous pouvez faire:

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

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

contient alors le contenu du image.

+0

Quel type de données l'image contient-elle? J'utilise Webforms ... – Martijn

+0

System.Drawing.Image – Kazar

0

D'abord, convertissez l'image en un tableau d'octets en utilisant la classe ImageConverter. Puis spécifiez le mime type de votre image png, et voilà!

Voici un exemple:

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

oui, merci. corrigée! –

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; 
    } 

utiliser juste au-dessus du code je pense que votre problème sera résolu

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)); 
Questions connexes