C#,将gif数据转换为二进制数组,再转换为图像
这与测试仪器有关,但在C#代码方面需要更多帮助。 关于我的问题,我在这里做了更多的解释。 我向仪器发送命令,只从仪器接收数据。 接收到的数据是实格式(二进制),我只是将其放入字符串变量中。 在这里,我捕捉到了绳子里面的东西 然后我想做的是我想让这个字符串转换字节数组。因为我的目标是在我的电脑中生成png文件。仪器手册上说,返回的数据是gif格式,但返回的是实型 我相信问题的关键是当我转换成字节数组时,会出现问题。。。 有人有这种经验吗C#,将gif数据转换为二进制数组,再转换为图像,c#,bytearray,screenshot,gif,imagemagick-convert,C#,Bytearray,Screenshot,Gif,Imagemagick Convert,这与测试仪器有关,但在C#代码方面需要更多帮助。 关于我的问题,我在这里做了更多的解释。 我向仪器发送命令,只从仪器接收数据。 接收到的数据是实格式(二进制),我只是将其放入字符串变量中。 在这里,我捕捉到了绳子里面的东西 然后我想做的是我想让这个字符串转换字节数组。因为我的目标是在我的电脑中生成png文件。仪器手册上说,返回的数据是gif格式,但返回的是实型 我相信问题的关键是当我转换成字节数组时,会出现问题。。。 有人有这种经验吗 /// below is just
/// below is just send command to instrument that i want " Returns an image of the display in .gif format "
my6705B.WriteString("hcop:sdump:data?", true);
string image_format = my6705B.ReadString();
/// what's inside string image_format ??![i attached screenshot png file. this is what i received from instrument. (manual said this is Returns an image of the display in .gif format)][1] ![png file][2]
我相信我的解释是在评论中。
让我再次解释一下,我的目标是将gif数据转换为图像文件。
仪器以.gif格式返回显示器的图像。
我将此数据接收到字符串数组我不知道这是不是正确的,但现在我把字符串数组>然后我只想png或jpg文件与此gif数据
请告知
Joseph Choi请尝试以下图像格式
image.Save(@"C:\Users\Administrator\Desktop\imageTest.png", System.Drawing.Imaging.ImageFormat.Png);
更新:
byte[] byte_array22 = Encoding.Unicode.GetBytes(image_format);
MemoryStream ms4 = new MemoryStream(byte_array22);
Image image = Image.FromStream(ms4, true, true);
image.Save(@"C:\Users\Administrator\Desktop\imageTest.png",System.Drawing.Imaging.ImageFormat.Png);
嗯。。。以下是将图像转换为Base64格式(字符串)并返回的两种方法
private string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
private Image Base64ToImage(string base64String)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
return image;
}
}
你可以使用它们并与它们一起玩,看看它们是否适合你
我不确定拍摄图像并简单地将其转储到字符串数组中会对您有多大帮助。但就在代码出错之前。Image=Image.FromStream(ms4);//错误点==>所以我认为关键点是返回字符串,我们如何处理它…是的,我更新了代码,但在“Image Image=Image.FromStream(ms4,true,true);”中仍然存在相同的错误,所以上面的评论nitrocaster说需要转换ASCII字符串,所以现在我尝试做的一件事就是现在仪器数据格式是ASC,所以我可以改成真正的格式。然后我们可以用另一种方法??您需要读取ASCII字符串,而不是16位unicode。当前encode.GetBytes(image#u格式)返回类似于{'#'、'\0'、'0'、'\0'、'G'、'\0'、'I'、'\0'、'F'、'\0'、'8'、'\0'、'9'、'\0'…}的内容。您要么必须使用其他API,要么使用Encoding.ASCII.GetBytes()将image#u格式转换为ASCII格式。现在我可以做的一件事是仪器数据格式为ASC,所以我可以改为真实格式。然后我们可以做另一种方法??我认为关键点是仪器可以返回asc或真实格式。所以我所做的是将格式设置为asc,然后更改Encoding.ASCII.GetBytes()。但是MemoryStream ms4中的错误=新的MemoryStream(字节\数组22);Image=Image.FromStream(ms4,true,true);谢谢,我需要的是基于图像的64ToImage。。我需要的是返回字符串可以是asc或real,这意味着我可以选择。。。。我应该用哪种方法??
private string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
private Image Base64ToImage(string base64String)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
return image;
}
}