无法隐式转换类型';System.Drawing.Image';到';System.Drawing.B

本文关键字:System Drawing Image 转换 类型 | 更新日期: 2023-09-27 18:20:28

声明了一个位图,该位图是

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]);。但是仍然具有相同的错误
有什么建议可以纠正或正确处理吗?

无法隐式转换类型';System.Drawing.Image';到';System.Drawing.B

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

由于错误消息表明您不能隐式执行此操作,因此需要将其显式转换为Bitmap

编辑

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

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

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

在我的案例中,我的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);

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