如何在c#中将图像转换为字节[]

时间:2011-01-31 16:03:02

标签: c#

这将是一个菜鸟问题。 我是c#

的新手

我有一个文件上传服务器控件,用于将图像保存到服务器。

我的库中有一个带有此参数的图像大小调整功能:

byte[] resizeImage(byte[] image, int witdh)

我应该使用。 现在,我将我的文件保存到某个路径为upImage.saveas(“filepath”);

OK?

现在,我想调整此图像的大小,我不知道如何将该图像转换为字节???

要转换的文章在哪里?在我看到的任何地方,我只能看到要映像的字节,但我想要其他方式..

请帮帮忙?

5 个答案:

答案 0 :(得分:5)

您的意思是将保存的文件转换为byte[]数组吗?如果是这样,您可以使用File.ReadAllBytes

byte[] imageBytes = File.ReadAllBytes("example.jpg");

如果您想直接从FileUpload控件中抓取byte[]数组,则可以使用FileBytes属性:

byte[] imageBytes = yourUploadControl.FileBytes;

答案 1 :(得分:4)

看起来您可以将其保存到MemoryStream,然后将MemoryStream转换为字节数组。来自here

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
 MemoryStream ms = new MemoryStream();
 imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
 return  ms.ToArray
}

答案 2 :(得分:0)

嗯,简短的回答是

File.ReadAllBytes("filepath");

但是答案很长,听起来好像你不知道发生了什么,所以我建议你确保图像实际上是按照你想象的方式编码的(它实际上是磁盘上的位图,或者它是否被压缩了?resizeImage实际上对字节做了什么以及它期望什么样的图像?为什么resizeImage没有Image只用GDI +来调整它??)否则你可能会感到惊讶。

答案 3 :(得分:0)

您可以使用Image.Save函数,传入内存流。完成后,您可以使用MemoryStream.Read或MemoryStream.ToArray来恢复字节。

答案 4 :(得分:0)

使用post方法将文件转换为fileuploadcontrol中的字节

public ActionResult ServiceCenterPost(ServiceCenterPost model)
{
     foreach (var file in model.FileUpload)
     {
          if (file != null && file.ContentLength > 0)
          {
             byte[] fileBytes = new byte[file.ContentLength];
             file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));
             string thumbpath = _fileStorageService.GetPath(fileName);
            _fileStorageService.SaveFile(thumbpath, fileBytes);
         }
     }
}