C#,将gif数据转换为二进制数组到图像

时间:2014-10-15 12:16:17

标签: c# bytearray screenshot gif imagemagick-convert

这与测试仪器有关,但需要在C#代码中提供更多帮助。 我在这里做了更多关于我的问题的解释。 我发送命令到仪器,我只是从仪器接收数据。 收到的数据是真实格式(二进制),我只是输入字符串变量。 在这里我捕获了字符串中的内容..

http://i.stack.imgur.com/UcYqV.png

然后我想要做的是我希望这个字符串转换字节数组。因为我的目标是在我的电脑上制作png文件。仪器手册说这个返回的数据是gif格式但返回真实类型。 我相信问题点是当我转换为字节数组时,有问题... 有没有人有这种体验,?????

            /// 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]  

http://i.stack.imgur.com/UcYqV.png

          /// now here i think i did something wrong,
          /// the goal is i want change this return data to gif or png or image file.
          /// any solution is ok for me
          /// i just try that change this data to byte array and then try to change image file.
         ///  i think some error here because my code success to convert byte array then create image,,, error
         //// i believe that i did something wrong in convert byte array.....

            System.Text.UnicodeEncoding encode = new System.Text.UnicodeEncoding();
            byte[] byte_array22 = encode.GetBytes(image_format);

            MemoryStream ms4 = new MemoryStream(byte_array22);
            Image image = Image.FromStream(ms4);     //// error point
            image.Save(@"C:\Users\Administrator\Desktop\imageTest.png");

我相信我的解释是在评论中。 让我再解释一下,我的目标是将gif数据转换为图像文件。 instrument给我们返回.gif格式的显示图像。 我收到这个数据到字符串数组。 <我不知道这是否正确但是现在我把它放到字符串数组>那么我只想用这个gif数据png或jpg文件。

请咨询,。

Joseph Choi

2 个答案:

答案 0 :(得分:1)

请尝试使用ImageFormat

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

答案 1 :(得分:0)

嗯......这里有两种方法可以将图像转换为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;
        }
    }

您可以使用它们并与它们一起玩,看看它们是否适合您。

我不确定拍摄图像只是将其转换为字符串数组会对你有所帮助。