【发布时间】:2018-05-10 07:01:50
【问题描述】:
我们可以将图像转换为字节数组以发送到 ESC/POS 打印机。
我在这里使用代码:https://stackoverflow.com/a/14099717/1853275
它就像魅力一样。
简单问题:是否可以将此字节数组转换回原始图像?
如果是,请告诉我如何...
大图:
我创建了一个充当 POS 打印机的 TCP/IP 侦听器。
它从 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;
}
【问题讨论】:
-
尝试将位图的反面写成 ESC 转换程序,这无疑不仅仅是单行副本,否则所有其他代码都没用......你不这么认为吗?
-
@AdrianoRepetti 我知道我需要反过来。但我需要帮助/提示。或者如果有人这样做了。如果我已经知道该怎么做,我不知道为什么要发布问题
-
但不幸的是,这不是 Stack Overflow 中的主题。您或多或少在问“怎么做”或“您是否已经拥有该代码?”。另见How to Ask