我是通过以下方式通过串口直接将收据打印到POS打印机,SerialPort port = new SerialPort("com6",9100,Parity.None,8,StopBits.One);

port.Open();

port.Write("Some Text");

port.Close();

我的问题是我将如何使用上述方法打印位图图像?任何帮助将不胜感激.

我还没有决定使用Microsoft POS for.net,因为它很慢并且需要时间来初始化打印机,客户不喜欢等待.

谢谢.

这应该会从位图中获取一个您可以发送到打印机的字符串:

public string Getlogo()

{

string logo = "";

if (!File.Exists(@"C:\bitmap.bmp"))

return null;

BitmapData data = GetBitmapData(@"C:\bitmap.bmp");

BitArray dots = data.Dots;

byte[] width = BitConverter.GetBytes(data.Width);

int offset = 0;

MemoryStream stream = new MemoryStream();

BinaryWriter bw = new BinaryWriter(stream);

bw.Write((char)0x1B);

bw.Write('@');

bw.Write((char)0x1B);

bw.Write('3');

bw.Write((byte)24);

while (offset < data.Height)

{

bw.Write((char)0x1B);

bw.Write('*'); // bit-image mode

bw.Write((byte)33); // 24-dot double-density

bw.Write(width[0]); // width low byte

bw.Write(width[1]); // width high byte

for (int x = 0; x < data.Width; ++x)

{

for (int k = 0; k < 3; ++k)

{

byte slice = 0;

for (int b = 0; b < 8; ++b)

{

int y = (((offset / 8) + k) * 8) + b;

// Calculate the location of the pixel we want in the bit array.

// It'll be at (y * width) + x.

int i = (y * data.Width) + x;

// If the image is shorter than 24 dots,pad with zero.

bool v = false;

if (i < dots.Length)

{

v = dots[i];

}

slice |= (byte)((v ? 1 : 0) << (7 - b));

}

bw.Write(slice);

}

}

offset += 24;

bw.Write((char)0x0A);

}

// Restore the line spacing to the default of 30 dots.

bw.Write((char)0x1B);

bw.Write('3');

bw.Write((byte)30);

bw.Flush();

byte[] bytes = stream.ToArray();

return logo + Encoding.Default.GetString(bytes);

}

public BitmapData GetBitmapData(string bmpFileName)

{

using (var bitmap = (Bitmap)Bitmap.FromFile(bmpFileName))

{

var threshold = 127;

var index = 0;

double multiplier = 570; // this depends on your printer model. for Beiyang you should use 1000

double scale = (double)(multiplier/(double)bitmap.Width);

int xheight = (int)(bitmap.Height * scale);

int xwidth = (int)(bitmap.Width * scale);

var dimensions = xwidth * xheight;

var dots = new BitArray(dimensions);

for (var y = 0; y < xheight; y++)

{

for (var x = 0; x < xwidth; x++)

{

var _x = (int)(x / scale);

var _y = (int)(y / scale);

var color = bitmap.GetPixel(_x,_y);

var luminance = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);

dots[index] = (luminance < threshold);

index++;

}

}

return new BitmapData()

{

Dots = dots,Height = (int)(bitmap.Height*scale),Width = (int)(bitmap.Width*scale)

};

}

}

public class BitmapData

{

public BitArray Dots

{

get;

set;

}

public int Height

{

get;

set;

}

public int Width

{

get;

set;

}

}

android nv位图打印机_通过C#中的comport将位图图像打印到pos打印机相关推荐

  1. tplink 跨路由器 共享打印机_焦作联通案例分享:跨网段通过防火墙共享打印机设置...

    跨网段通过防火墙共享打印机设置 焦作联通网络部:薛培延 两个不同的局域网间如何实现打印机共享操作呢?以下将与大家分享一下处于同一个路由器连接下(即处于同一个域中的计算机之间)不同局域网段之间打印机共享 ...

  2. 打印机服务器纸张属性不显示,为什么我的打印机能在打印机服务器属性里设置自定义纸张大小,却无法? 爱问知识人...

    问题原因及解决方法 1.在以往的Windows 98操作系统中,打印机属性里的"纸张大小"中有"自定义"一项.而Windows 2000和Windows XP中 ...

  3. php 热敏打印,从PHP打印到POS打印机

    我们希望打印到运行apache的POS打印机.由于应用程序的设计和部署,应该从服务器进行打印(它应该检测订单并发送到不同的打印机和不同格式的打印-账单,厨房订单等--).出于这个原因和其他(例如来自i ...

  4. android nv位图打印机_如何打印位图图片

    展开全部 常用的矢量图格式 *.bw是包含各种像素信息的一种黑白图形文件格32313133353236313431303231363533e58685e5aeb931333262383561式. *. ...

  5. android调用python框架_在Java中从Android应用程序执行Python脚本?

    我正试图找到一种在Android中从Java代码执行Python脚本的方法.我对这个问题做了一个研究,但我发现的唯一问题是,如何在APK for android(Kivy e.t.c.)中转换pyth ...

  6. java windows 打印机_使用Java中的客户端计算机打印机(不是部署应用程序的服务器)进行打印...

    我使用Spring开发了一个使用Java 8的应用程序 . 用户故事是客户端应该选择要打印的许多文档(PDF),然后按一个按钮并将它们全部打印到默认的客户端机器打印机(浏览器中的Ctrl P功能在尝试 ...

  7. python调用打印机打印图片_在python中通过图像发送到打印机上的文本

    在 windows系统中使用 python,wx python和sqlite.我正在尝试打印一些证书/文凭/卡片,背景中有图像,上面有人/文字的名称. 我知道使用来自Pywin32的win32prin ...

  8. python 3d打印机_如何使用Python构建自己的CNC控制器和3D打印机

    python 3d打印机 by Nikolay Khabarov 通过尼古拉·哈巴罗夫(Nikolay Khabarov) 如何使用Python构建自己的CNC控制器和3D打印机 (How you c ...

  9. python打印指定行数的分割线_在Python中的分隔线上打印列表元素

    我正在尝试使用以下方法打印出Python路径文件夹: import sys print sys.path 输出是这样的: >>> print sys.path ['.', '/usr ...

最新文章

  1. 文件哈希审计工具md5deep/hashdeep
  2. 特性Attribute
  3. 在SQL中使用DEFAULT约束
  4. (18)css常用样式—定位属性
  5. 为什么volatile能保证有序性不能保证原子性
  6. 【Web学习笔记】easyui框架
  7. 小规模票表比对不通过_实用 | 增值税纳税申报比对失败怎么办?操作指南来啦...
  8. python label背景透明_如何使tkinter标签的背景透明,以便只看到文本?
  9. 多媒体计算机的媒体信息包括文字,多媒体计算机中的媒体信息是指什么
  10. java io 系列(转载skywang12345)
  11. vscode 突然无法切换输入法(切换中文输入法)
  12. CGAL::2D Arrangements
  13. 一文详解BQSR-碱基质量矫正原理和实战
  14. 我的第一个WFF项目
  15. HTML5+获取设备信息
  16. Python 实现 PDF转图片 图片转PDF
  17. 工商银行提前还房贷流程
  18. 豫让刺杀赵襄子故事原文/白话文翻译?士为知己者死,女为说己者容出自哪?
  19. 华为M3平板升级鸿蒙系统,华为m3平板 日版刷国行 没有重力感应怎么解决?(篇二)...
  20. firefox省流量攻略

热门文章

  1. “SEO是什么意思?”Kyw的通俗回答
  2. 实时渲染大赛太卷了,来看提前交卷的优秀参赛作品
  3. Hive 自定义UDF函数讲解
  4. jetson xiaver NX 安装tensorflow object detection api 遇到的tensorflow-addons 不能安装问题
  5. [react] addons
  6. 《Web 测试精要》- 第6章:浏览器控制台与调试方法
  7. win10系统 CAJ文件打不开 老弹出 File doesn't existed or can't be visited normally! 文件不存在或不能正常访问
  8. 学习云计算哪里好?云计算新的前景出路
  9. http响应最大时长 nginx_请问一下该如何用nginx 设置响应时间?
  10. Java入门教程:最全面最简单的Java基础教程