无法将类型'System.Drawing.Image'隐式转换为'System.Drawing.Bitmap'

时间:2012-01-14 07:03:02

标签: c# .net bitmap

声明了一个

的位图
private Bitmap img1 = null;  
private Bitmap img2 = null;  

openFileDialog 中选择后,图像将被推出。
选定的图像被放置在一个数组中。

imgName = openFD.FileNames;

然后按钮1显示这些图像。

pictureBox1.Image = Image.FromFile(imgName[0]);  
pictureBox2.Image = Image.FromFile(imgName[1]);

我用这个

替换了button1代码
img1 = Image.FromFile(imgName[0]);  
img2 = Image.FromFile(imgName[1]);

但发生错误

  

无法将类型'System.Drawing.Image'隐式转换为'System.Drawing.Bitmap'

我尝试将代码更改为img1 = Bitmap.FromFile(imgName[0]);。但仍然有同样的错误 有任何建议如何纠正或做到这一点?

4 个答案:

答案 0 :(得分:7)

img1 = new Bitmap(imgName[0]);
img2 = new Bitmap(imgName[1]);

答案 1 :(得分:2)

img1 = (Bitmap) Image.FromFile(imgName[0]);
img2 = (Bitmap) Image.FromFile(imgName[1]);

由于错误消息显示您无法隐式执行此操作,因此您需要明确地将其强制转换为Bitmap

修改

基于下面的评论,我建议使用icktoofay的答案,即使用Bitmap构造函数,或者如果您可以直接使用Image类而不是使用Bitmap,您也可以使用它

答案 2 :(得分:0)

我在代码中使用了这三行代码来将字节值分配给c#中的图像。

ImageConverter converter = new ImageConverter();
pbStudentPicture.Image =  (Image)converter.ConvertFrom(StudentPinfo.Picture);
pbStudentPicture.SizeMode = PictureBoxSizeMode.StretchImage;

答案 3 :(得分:0)

就我而言,我的System.Drawing.Image不是来自文件,而是来自设备的相机。由于我不想将图像保存到文件中作为中间步骤,因此我使用了以下方法:

var imageBitmap = new Bitmap(image.Width, image.Height);
using (var graphics = Graphics.FromImage(imageBitmap))
    graphics.DrawImage(image, 0, 0, image.Width, image.Height);

也许这对其他人有帮助;)