我从套接字通信接收image
asbyte[]
然后我尝试在pictureBox
. 当我运行代码时,它只显示一条消息错误:"NullReferenceException"
处理异常的捕获是ex1
并且我检查了并且pic
不是null
所以我无法弄清楚为什么会发生这个异常。
这是我的代码:
try
{
if (pictureBox1.InvokeRequired)
{
try
{
pic = imageEmp;
addControlHandler c = new addControlHandler(addPic);
this.Invoke(c);
}
catch (Exception exc) { MessageBox.Show(exc.Message); }
}
else
{
pictureBox1.Image = ByteToImage(imageEmp);
}
}
catch (Exception ex1)
{
MessageBox.Show(ex1.Message);
}
public void addPic() //when invokeRequired == true
{
pictureBox1.Image = ByteToImage(pic);
}
这是要转换为的byte[]
代码Image
:
public Image ByteToImage(byte[] imageBytes) //convert byte[] to image
{
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = new Bitmap(ms);
return image;
}
更新 1:关于汉斯的回答,我对他进行了以下更改:
将我的 ByteToImage 更改为 Hans 的答案并检查错误在哪里,我在以下位置添加了以下行this.Invoke(c)
:
if (c != null)
{
try
{
this.Invoke(c);
}
catch (Exception e_c)
{
MessageBox.Show(e_c.Message, "exc from e_c");
}
}
这给了我一个例外:NullReferenceException
谢谢你的帮助!
更新 2:现在它正在工作,我发送 JPEG 图像而不是 JPG 并且它现在显示它。不知道为什么会发生这种情况,但现在它工作正常。