2015-08-08 66 views
0

我想構建一個更大的工具,它將採用.RTF格式的十六進制字符串並將它們轉儲到文件。這種從內存流寫入文件的嘗試拋出ReadTimeout和WriteTimeout類型爲「System.InvalidOperationException」的異常。我相信我有點過頭了。十六進制值不寫入圖像

,我一起工作的代碼是:

private void button_Click(object sender, RoutedEventArgs e) 
    { 

      // Image hex data 
      string hexImgData = @"FFD8FFE000104A46494600010200006400640000FFFFD9"; 

      // Call function to Convert the hex data to byte array 
      byte[] newByte = ToByteArray(hexImgData); 
      MemoryStream memStream = new MemoryStream(newByte); 

      // Save the memorystream to file 
      Image image = Image.FromStream(memStream, false, false); 

       image.Save(@"C:\img.jpg"); 
      memStream.Close(); 
      image.Dispose(); 
    } 

    // Function converts hex data into byte array 
    public static byte[] ToByteArray(String HexString) 
    { 
     int NumberChars = HexString.Length; 

     byte[] bytes = new byte[NumberChars/2]; 

     for (int i = 0; i < NumberChars; i += 2) 
     { 
      bytes[i/2] = Convert.ToByte(HexString.Substring(i, 2), 16); 
     } 
     return bytes; 
    } 

} 

任何幫助,將不勝感激

+0

它不是一個有效的JPG圖片... –

回答

1

如果你想要做的就是採取一個十六進制字符串,並將其記錄到文件中,有沒有必要通過將其包裝在MemoryStream然後Image中來將其過度複雜化。只需將字節直接寫入文件即可:

File.WriteAllBytes(@"C:\img.jpg", newByte); 

出現錯誤的原因是Ron評論;您提供的十六進制字符串不會形成有效的JPEG圖像。

+0

我想我應該擴大我的問題。我試圖將rtf文件中的十六進制字符串轉換爲圖像,該圖像可以通過docfusion通過docfusion從程序緩存中以編程方式放入Word模板中。這是一個經典的轉換問題,我覺得也許我正在計劃所有的一切都是過於複雜的事情開始... – ozfive

+0

我打算把你的答案標記爲答案,因爲它適用於我問的東西。我將開始一個關於syncfusion DocIO和rtf的新問題。 – ozfive