在C#中调整图像大小 - null异常?

时间:2016-11-28 12:03:12

标签: c# image image-resizing

我正在尝试调整图像的大小,如果它比x宽,以使其适合Word文档,但我收到以下错误消息:

  

System.Drawing.dll中发生了'System.ArgumentNullException'类型的异常,但未在用户代码中处理

     

附加信息:值不能为空。

 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);
}

执行resizedImage.Save(..)方法时出错。我调试了代码,resizedImage和ms以及resizedImage的RawFormat属性都不为null。我做错了什么?

这适用于宽度小于或等于650的图像。

1 个答案:

答案 0 :(得分:1)

除非文件来自现有文件,否则您无法使用RawFormat进行保存(resizedImage是内存中的位图,与image不同)。

使用特定格式进行保存(例如:ImageFormat.PngImageFormat.Jpeg),或使用image.RawFormat代替resizedImage.RawFormat,如果您想使用原始&#保存39; s文件格式