我正在使用内存流通过 FileUpload 控件调整图像大小。调整大小后,我希望它保存到我的文件系统 "~/images/2012/"+ filename
。
如何从内存流中保存图像?
System.Drawing.Image imageLarge = System.Drawing.Image.FromStream(stream);
System.Drawing.Image imageLarge1 = ResizeImage(imageLarge, 200, 300);
MemoryStream memolarge = new MemoryStream();
imageLarge1.Save(memolarge, System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(memolarge);
Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
myEncoder = Encoder.Quality;
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
string convertedImage = returnImage.ToString();
returnImage.Save("~/images/2012/" + filename,
ImageFormat.Jpeg, myEncoderParameters);
这是我遇到的重载方法错误:
cannot convert from 'System.Drawing.Imaging.ImageFormat' to System.Drawing.Imaging.ImageCodecInfo
最佳答案
查看 Image.Save
的重载.
只有最后两个接受 EncoderParameters
,它们都不接受 ImageFormat
- 都接受 ImageCodecInfo
。
能够自己诊断此类问题非常重要:
- 仔细查看编译错误
- 阅读文档
- 检查你打的电话是否有意义
这与保存到 MemoryStream
特别无关 - 事实上,不清楚为什么要保存 Image
然后立即加载 Image
来自同一流。 (无论如何,如果您真的想继续这样做,我建议您先将 Position
设置为 0。)
关于c# - 使用 C# 和 ASP.NET 从 Memorystream 保存图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714882/