C# 通过TSPL(PUTBMP)指令打印由Bitmap生成的二维码图片

这篇具有很好参考价值的文章主要介绍了C# 通过TSPL(PUTBMP)指令打印由Bitmap生成的二维码图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PUTBMP命令只支持打印位深为1或8的bmp图片。

Bitmap生成二维码可以用ZXing.Net库。

可参考 C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一) - 天马3798 - 博客园 (cnblogs.com)

如果Bitmap.Save()方法生成的是24位深图片,需要先做位数转换。

可参考 彩色/灰色Bmp 转单色 - johngeng - 博客园 (cnblogs.com)

 通过上述转换得到单色bmp图片后,却无法打印出二维码;而用系统自带的画图软件另存为单色bmp图,是可以打印的

C# 通过TSPL(PUTBMP)指令打印由Bitmap生成的二维码图片

BMP文件结构可参考 BMP图像文件完全解析 - 知乎 (zhihu.com)

于是用UltraEdit打开两种方式生成的单色bmp图片做对比,发现由画图软件生成的单色图,信息头部分biSizeImages(第35-38字节)表示的是位图数据的真实大小;而Bitmap.Save()方法生成的单色图,biSizeImages存储的是0x00000000,表示位图数据大小为0。

显然这就是错误所在,需要做以下步骤来重构bmp图片。

private void RebuildBitmapFile(string fileName)
        {
            Bitmap bitmap = new Bitmap(fileName);

        // 获取原图片文件大小
int sizeInByte = (int)new FileInfo(fileName).Length;
using (MemoryStream stream = new MemoryStream()) {
          // 把bitmap保存到MemoryStream,再存储为byte数组 bitmap.Save(stream, ImageFormat.Bmp);
byte[] data = new byte[sizeInByte]; stream.Seek(0, SeekOrigin.Begin); stream.Read(data, 0, Convert.ToInt32(stream.Length));

          // 把biSizeImages设置为真实大小。data[10]-data[13]表示bfOffBits,即从文件头到位图数据的偏移量
byte[] newInfo = intToBytes(sizeInByte - data[10] - data[11] * 256 - data[12] * 256 * 256 - data[13] * 256 * 256 * 256); data[34] = newInfo[0]; data[35] = newInfo[1]; data[36] = newInfo[2]; data[37] = newInfo[3];

          // 保存并覆盖原图片。这里不能用Bitmap.Save(),否则biSizeImages信息又是错的 File.WriteAllBytes(fileName, data); } }
public byte[] intToBytes(int value) { byte[] src = new byte[4]; src[3] = (byte)((value >> 24) & 0xFF); src[2] = (byte)((value >> 16) & 0xFF); src[1] = (byte)((value >> 8) & 0xFF); src[0] = (byte)(value & 0xFF); return src; }

重构之后二维码图片打印成功。文章来源地址https://www.toymoban.com/news/detail-650581.html

到了这里,关于C# 通过TSPL(PUTBMP)指令打印由Bitmap生成的二维码图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# QRCode二维码的解析与生成

    已知一张二维码图片,怎么生成一张一模一样的图片出来? 最近有个项目,需要用到QRCode,之前只做过Datamatrix格式的,想着应该也是差不多的,于是就依葫芦画瓢,掏出我的陈年OnBarcode类库,一通修改,生成了个崭新的QRCode,与客户提供的二维码图片一比对,虽然扫出来内

    2024年02月12日
    浏览(42)
  • spring boot 通过zxing生成二维码

    Spring Boot是一个基于Spring框架的快速开发、便捷部署的微服务框架。而ZXing是一个功能强大的开源库,用于生成和解析二维码。在Spring Boot应用中,您可以整合ZXing库来方便地生成二维码。 接下来,创建一个Spring Boot服务,并编写一个控制器类来生成二维码。以下是一个简单的

    2024年01月21日
    浏览(35)
  • C#动态生成带参数的小程序二维码

      在微信小程序管理后台,我们可以生成下载标准的小程序二维码,提供主程序入口功能。在实际应用开发中,小程序二维码是可以携带参数的,可以动态进行生成,如如下场景: 1、不同参数决定的显示界面不同。 2、不同参数决定的功能不同。 3、由于小程序审核机制,我

    2024年02月04日
    浏览(33)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换为Bitmap图像功能(C#)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩

    2024年01月19日
    浏览(34)
  • zxing二维码位矩阵转换成Bitmap位图

    ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。 该项目可实现的条形码编码和解码。我们支持以下格式: UPC-A,UPC-E EAN-8,EAN-13 39码 93码 代码128 创新及科

    2023年04月11日
    浏览(35)
  • React Native连接Zebra斑马打印机通过发送CPCL指令打印(Android 和 iOS通用)

    自 2015 年发布以来,React Native 已成为用于构建数千个移动应用程序的流行跨平台移动开发框架之一。通常,我们有开发人员询问如何将 Link-OS SDK 与 React Native 应用程序集成,以便在 Zebra 打印机上打印标签。在本教程中,我们将逐步介绍如何将 Link-OS SDK 添加到 Android 和 iOS 版

    2024年02月14日
    浏览(35)
  • C#用MathNet生成矩阵,并打印矩阵元素

    MathNet.Numerics中提供了线性代数、微积分、特殊函数、概率论、随机函数、插值、最优化等一系列功能,是.net技术中首选的数值计算包。 其中,线性代数包LinearAlgebra包提供了向量、矩阵等数据结构,这些是数值计算的前提,故而相比于其他包更加基础。 下面用VS新建一个控制

    2024年02月04日
    浏览(26)
  • C# Bitmap类学习1

    Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象。 先生成一个100*100大小的位图bmp1; 然后从bmp1获取Graphics对象g,然后用g进行绘制,这样绘制的东西是绘制在bmp1上;绘制字符串,绘制矩形; 然后

    2024年01月25日
    浏览(26)
  • C# 更改Bitmap图像色彩模式

    方法一:直接修改RGB的值 首先将BitmapData扫描线上的所有像素复制到字节数组中,然后遍历数组并对每个像素的RGB值进行修改,最后将修改后的像素值复制回BitmapData。这个过程不会影响原始的Bitmap对象,但会改变锁定的位图区域的数据。当完成修改后,应调用UnlockBits()方法释

    2024年01月22日
    浏览(25)
  • C# 手动解析灰度PNG图片为Bitmap

    当直接使用文件路径加载8位灰度PNG图片为Bitmap时,Bitmap的格式将会是Format32bppArgb,而不是Format8bppIndexed,这对一些判断会有影响,所以需要手动解析PNG的数据来构造Bitmap 若对PNG文件格式不是很了解,阅读本文前可以参考PNG的文件格式 PNG文件格式详解 简而言之,PNG文件头有

    2024年02月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包