2009-09-03 75 views
8

我有一個圖像(以.png格式),我想這張圖片轉換爲二進制。將圖像轉換爲二進制文件?

這怎麼可以用C#來完成?

+2

你是什麼意思 '轉換爲二進制'?你的意思是,例如,黑色和白色? – pavium 2009-09-03 12:14:49

+1

你能解釋一下嗎?圖像已經是二元的。你想解壓嗎,我們想要訪問像素嗎? – 2009-09-03 12:15:44

+0

我必須使用Response.BinaryWrite()將圖像的二進制數據寫入屏幕。 – Martijn 2009-09-03 12:16:16

回答

6

既然你有一個文件使用: -

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

如何將其轉換回圖片? – 2012-01-13 14:51:38

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

File.ReadAllBytes Method

打開的二進制文件,該文件的內容 讀入一個字節 數組,然後關閉該文件。

+1

除非需要在將該數組發送到響應之前處理該數組,否則讓ASP.NET使用WriteFile來處理它 – AnthonyWJones 2009-09-03 12:20:32

11

試試這個:

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

你可以這樣做:

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

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

數據隨後將包含的內容圖片。

+0

圖像有哪些數據類型?我正在使用Webforms ... – Martijn 2009-09-03 12:28:27

+0

System.Drawing.Image – Kazar 2009-09-03 12:29:12

0

首先,使用ImageConverter類將圖像轉換爲字節數組。然後指定你的PNG圖像的mime type,瞧!

下面是一個例子:

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

是的,謝謝。糾正! – 2014-01-12 13:41:36

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

只需使用上面的代碼,我認爲你的問題將得到解決

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)); 
相關問題