我们可以将图像转换为字节数组以发送到 ESC/POS 打印机。
我在这里使用代码:https
://stackoverflow.com/a/14099717/1853275
它就像魅力一样。
简单的问题:是否可以将此字节数组转换回原始图像?
如果是,请告诉我如何...
更大的图景:
我创建了一个 TCP/IP 侦听器,它充当 POS 打印机。
它从 POS 应用程序接收数据,然后转发到真实打印机。
在这两者之间,我必须在收据上拿到产品并根据产品打印一些额外的东西。
所以,我需要将图形数据转换为图像(然后是 OCR)来读取收据上的产品。
这是一张捕获的 ESC/POS 收据:
pastebin.com/vUDHjGuj
(我们可以将其转换为字节数组,然后发送到打印机。它会打印收据。)
我知道捕获数据的结构。我们可以删除 ESC/POS 命令并将数组拆分为 0x0A LF。我只需要一种将图形字节数组转换为图像并将切片放在一起以创建收据图像的方法。
发送到打印机的图形模式为:24 位双倍密度 (0x1B 0x2A 0x21)
请帮助...
非常感谢
下面是我尝试过的作品之一,但它全黑。
我发送一个切片(字节 []),宽度 = 512(来自捕获的数据),高度:1(或任何)
public static Bitmap FromByteArray(byte[] ByteArray, Size Size)
{
Bitmap bmp = new Bitmap(Size.Width, Size.Height, PixelFormat.Format24bppRgb);
BitmapData bmpdata = bmp.LockBits(new Rectangle(0, 0, Size.Width, Size.Height),ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
IntPtr ptr = bmpdata.Scan0;
System.Runtime.InteropServices.Marshal.Copy(ByteArray, 0, ptr, ByteArray.Length);
bmp.UnlockBits(bmpdata);
return bmp;
}