2012-05-22 54 views
1

我需要一些幫助,在一個十六進制字符串轉換成圖像C#十六進制字符串字節的圖像和過濾

做了一些研究,我想出了這個代碼:

private byte[] HexString2Bytes(string hexString) 
{ 
    int bytesCount = (hexString.Length)/2; 
    byte[] bytes = new byte[bytesCount]; 
    for (int x = 0; x < bytesCount; ++x) 
    { 
     bytes[x] = Convert.ToByte(hexString.Substring(x*2, 2),16); 
    } 

    return bytes; 
} 


public bool ByteArrayToFile(string _FileName, byte[] _ByteArray) 
{ 
    try 
    { 
      System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write); 
      _FileStream.Write(_ByteArray, 0, _ByteArray.Length); 
      _FileStream.Close(); 
      return true; 
    } 
    catch (Exception _Exception) 
    { 
     MessageBox.Show(_Exception.Message); 
    } 

     return false; 
} 

的問題是,所產生的圖像幾乎都是黑色的,我想我需要應用一些濾鏡來更好地轉換灰度(因爲原始圖像僅在灰度級)

任何人都可以幫助我嗎?

非常感謝

+0

等待 - 產生的二進制文件是否正常?我的意思是,你發現你發佈的功能有問題嗎? –

+0

但是你顯示的方法只是將字符串轉換爲字節數組。你接下來做了什麼,來創造形象? A [Marshal.Copy](http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.copy.aspx)? –

回答

2

您不需要應用任何過濾器。我猜想你輸入的hexString變量只是一個黑色圖像。以下對我很有用:

class Program 
{ 
    static void Main() 
    { 
     byte[] image = File.ReadAllBytes(@"c:\work\someimage.png"); 
     string hex = Bytes2HexString(image); 

     image = HexString2Bytes(hex); 
     File.WriteAllBytes("visio.png", image); 
     Process.Start("visio.png"); 
    } 

    private static byte[] HexString2Bytes(string hexString) 
    { 
     int bytesCount = (hexString.Length)/2; 
     byte[] bytes = new byte[bytesCount]; 
     for (int x = 0; x < bytesCount; ++x) 
     { 
      bytes[x] = Convert.ToByte(hexString.Substring(x * 2, 2), 16); 
     } 

     return bytes; 
    } 

    private static string Bytes2HexString(byte[] buffer) 
    { 
     var hex = new StringBuilder(buffer.Length * 2); 
     foreach (byte b in buffer) 
     { 
      hex.AppendFormat("{0:x2}", b); 
     } 
     return hex.ToString(); 
    } 
} 
+0

它不是一個黑色的圖像,因爲我可以看到一些東西,但在非常低的亮度和幾乎所有的黑色 – ilcaste

+0

嗯,我不知道,必須有別的東西,然後你的代碼的其他部分,你還沒有顯示。我發佈的代碼在這裏100%。我已經用輸入圖像對它進行了測試,並生成了完全相同的輸出圖像。我不明白我可以如何進一步幫助你。 –

+0

該代碼適用於所有「普通」彩色圖像,但我的灰度級僅限於黑色,而結果幾乎全是黑色,而不是多級灰色 – ilcaste

相關問題