2009-09-03 138 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)); 
相关问题