c#-X位图处理器不起作用
|
我最近一直在研究图像处理器,并决定查看旧的XBitmap文件格式(XBM)。我正在使用C#将这些文件中的像素数据复制到位图。我设法设置了算法,该算法在理论上似乎可以正常工作,但显示不正确。对于任何不知道的人,XBM是ACSII C文件,其中包含字节数组,并显示单色数据。以下是我的算法,因此,如果有人可以指出正确的方向,我将非常高兴。
抱歉,有点逐字记录,但这是整个解码器:
string input = File.ReadAllText(fname);
using (StreamReader r = new StreamReader(fname))
{
int i = input.IndexOf(\'{\');
string bytes = input.Substring(i+1);
int j = bytes.IndexOf(\'}\');
bytes = bytes.Remove(j-1);
string[] StringArray = bytes.Split(new string[] { \",\" }, StringSplitOptions.RemoveEmptyEntries);
byte[] pixels = new byte[StringArray.Length];
for (int k = 0; k < StringArray.Length; k++)
{
byte result;
StringArray[k] = StringArray[k].Replace(\"0x\", \"\");
StringArray[k] = StringArray[k].Replace(\"\\r\", \"\");
StringArray[k] = StringArray[k].Replace(\"\\n\", \"\");
StringArray[k] = StringArray[k].Trim();
bool result1 = byte.TryParse(StringArray[k], NumberStyles.HexNumber, CultureInfo.CurrentCulture, out result);
if (result1)
pixels[k] = result;
else
throw new Exception();
}
xBits = System.Runtime.InteropServices.Marshal.AllocHGlobal(pixels.Length);
System.Runtime.InteropServices.Marshal.Copy(pixels, 0, xBits, pixels.Length);
}
return xBits;
没有找到相关结果
已邀请:
1 个回复
疾很毋悲