2016-11-28 27 views
0

我试图调整图像大小,如果它是比X宽它放入一个Word文档,但我发现了一个以下错误消息:在C#中调整图像大小 - null异常?

类型“System.ArgumentNullException”的异常出现在System.Drawing.dll但未在用户代码中处理

其他信息:值不能为空。在执行resizedImage.Save(..)方法

using (MemoryStream ms = new MemoryStream()) 
      { 
       System.Drawing.Image image = System.Drawing.Image.FromFile(physicalPath); 
       System.Drawing.Image resizedImage; 

       if (image.Width > 650) 
       { 
        double multiplier = image.Width/650.0; 
        int newWidth = 650; 
        int newHeight = (int) (image.Height/multiplier); 
        resizedImage = (System.Drawing.Image)new Bitmap(image, new Size(newWidth,newHeight)); 
       } 
       else 
       { 
        resizedImage = image; 
       } 

       image.Dispose(); 
       resizedImage.Save(ms, resizedImage.RawFormat); 
} 

错误occures。我调试了代码,并且resizedImage的resizeImage,ms和RawFormat属性都不为null。我究竟做错了什么?

该工程确定为图像与宽度小于或等于650

+0

大bug,它会处理* resizedImage *如果宽度<= 650。 –

+0

@HansPassant为什么会这样? – Skylerdw

回答

1

您不能保存使用RawFormat除非该文件来自现有文件(resizedImage是在内存中的位图,不像image)。

使用特定的格式保存(例如:ImageFormat.Png,或ImageFormat.Jpeg),或使用image.RawFormat代替resizedImage.RawFormat如果你想使用原始的文件格式来保存的Dispose()调用

+0

你说得对。谢谢! – Skylerdw