我有热敏打印机X330,我需要从Android相机打印和图像(位图),但我不能......我总是在打印机中获得符号。
在文件中说:
打印栅格位图
我知道位图需要转换,但我无法获得正确的格式。
有人可以帮助我!!!
提前致谢
答案 0 :(得分:1)
我不久前在这方面挣扎,最终让它发挥作用。我的热敏打印机与您使用的热敏打印机不同,但原理应保持不变。所以我的打印机通过USB工作,这是我发送到打印机的图像打印。
byte[] rasterImage = {0x1D, 0x76, 0x30, 0x30, 0x20, 0x00, 0x00, 0x01};
File file = new File("/mnt/sdcard/1.bmp");
int size = (int) file.length();
bitmapdata = new byte[size];
try
{
BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
buf.read(bitmapdata, 0, bitmapdata.length);
buf.close();
} catch (FileNotFoundException e)
{
} catch (IOException e)
{
}
connection.bulkTransfer(endpoint, rasterImage, rasterImage.length, TIMEOUT);
connection.bulkTransfer(endpoint, bitmapdata, bitmapdata.length, TIMEOUT);
rasterImage基本上是告诉打印机所需的十六进制数据的设置,而不是我想要打印光栅位图像。然后我从设备的内部存储器中读取照片或图像,并将其转换为字节[]。然后我将rasterImage十六进制数据和bitmapdata发送到打印机。
需要注意的一点是,首先需要将要打印的图像转换为1位深度的单色图像,您可以使用绘画来执行此操作(只需将图像从绘制中保存为单色位图),您需要这样做是因为打印机只能打印一个点或没有点,它不能打印分层图像等。其次,你需要确保图像分辨率是8的倍数,原因是由于xL,xH ,yL和yH计算在我的打印机上,一个只能以字节为单位工作,所以除了8的倍数之外我无法得到任何东西。所以我的图像是256x256。
如果您有成功,请告诉我,如果您需要更多帮助,请告诉我。
我没有包含任何USB代码,只是使用蓝牙连接以类似的方式发送数据。