这将是一个菜鸟问题。 我是c#
的新手我有一个文件上传服务器控件,用于将图像保存到服务器。
我的库中有一个带有此参数的图像大小调整功能:
byte[] resizeImage(byte[] image, int witdh)
我应该使用。 现在,我将我的文件保存到某个路径为upImage.saveas(“filepath”);
OK?
现在,我想调整此图像的大小,我不知道如何将该图像转换为字节???
要转换的文章在哪里?在我看到的任何地方,我只能看到要映像的字节,但我想要其他方式..
请帮帮忙?
答案 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);
}
}
}