【问题标题】:Save Image from Memorystream using C# and ASP.NET使用 C# 和 ASP.NET 从 Memorystream 保存图像
【发布时间】:2012-10-04 03:07:35
【问题描述】:

我正在使用内存流通过 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);

这是我遇到的重载方法错误:

无法从“System.Drawing.Imaging.ImageFormat”转换为 System.Drawing.Imaging.ImageCodecInfo

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    看看Image.Save的重载。

    只有最后两个接受EncoderParameters,并且他们都不接受ImageFormat - 都接受ImageCodecInfo

    能够自己诊断此类问题非常重要:

    • 仔细查看编译器错误
    • 阅读文档
    • 检查您拨打的电话是否有意义

    这与保存到 MemoryStream 无关 - 事实上,尚不清楚为什么要保存 Image 然后立即从同一流中加载 Image。 (如果你真的想继续这样做,我建议在你这样做之前将 Position 设置为 0。)

    【讨论】:

      【解决方案2】:

      试试这一行:

      returnImage.Save(
          "~/images/2012/" + filename,
          ImageCodecInfo.GetImageEncoders()
              .Where(i => i.MimeType == "image/jpeg")
              .First(),
          myEncoderParameters);
      

      【讨论】:

      • 当我使用这段代码时,它给了我这个错误“使用未分配的局部变量'myEncoderParameters'知道这意味着什么吗?我尝试用谷歌搜索它,但我充其量是一个ametur编码器,我不是得到它。
      【解决方案3】:

      请参阅Saving as jpeg from memorystream in c# 的帖子,它的功能与您正在寻找的非常相似。

      还要正确更改编解码器 http://msdn.microsoft.com/en-us/library/ytz20d80.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-05
        • 2016-08-23
        • 1970-01-01
        • 2011-09-07
        • 1970-01-01
        • 2016-11-13
        • 2018-12-17
        相关资源
        最近更新 更多