如何生成可可靠扫描的小型、高密度线性条形码?

2024-04-29

我正在努力将 POS 系统集成到我的网站。所以我想生成条形码。我使用 SKU 作为数据字段来编码甲酸盐是XXXXX-XXX-XXX-XXX.

X 是从 0 到 9 的数字,所以经过研究,我发现代码 128 是最好的纠正我的方法,如果我错了。尺寸问题,当我使用生成条形码时,物品上的标签为 2' x 3 1/2' 英寸barbecue并调整图像大小,扫描仪无法读取条形码。那么您能否解释一下尺寸限制是什么以及我可以获得的最小尺寸(以英寸为单位)是多少。


高质量条码的生产需要从头到尾精确控制打印过程。在这里,我提供特定于 Code 128 的指南以及一般适用于线性条形码的附加指南。

代码128的优化

对于 Code 128 的通用用途没有强制规定的大小限制,但是 Code 128 在特定行业中的应用确实定义了此类限制。对于您的内部用途,实际上只有实际的限制,例如打印机的保真度和扫描仪的功能,将决定尺寸的上限和下限。

您应该确保数据可以在 Code 128 中尽可能紧凑地表示,因为这将减少所需的条形和空格元素数量,从而在调整符号大小时提供更大的灵活性。例如,使用纯数字数据将能够有效地使用双密度“模式 C”数字压缩。看这个答案 https://stackoverflow.com/a/31359916/2568535了解更多详情。

这就引出了一个问题:您是否可以从 SKU 中删除破折号,并在扫描符号后在应用程序中重新引入破折号?考虑带破折号和不带破折号的 SKU 的代码 128 的不同宽度,以了解其影响:

此外,必须在符号的两端保留至少十倍于 X 尺寸(窄条的宽度)的安静区域:

如上图所示,静区应被视为 Code 128 符号的组成部分。

线性条形码优化的一般指南

对于封闭式应用(您可以完全控制符号的打印和扫描),目标是最大化条形码的宽度,前提是它能够舒适地适合扫描仪的视野。

对于涉及拥有自己的设备和流程的多个贸易伙伴的开放应用(例如一般零售或物流),请确保打印符号的 X 尺寸和高度处于相关应用标准定义的最小和最大约束范围内。

在所有情况下,请避免抗锯齿,因为许多扫描仪执行边缘到相似边缘的测量,这种测量对于定义清晰、高对比度的边缘效果最佳。抗锯齿通常是由于放大尺寸过小的位图图像而产生的,但由于旨在改善常规图像中“锯齿”外观的功能而没有进行缩放,也可能会出现抗锯齿。

确保输出符号的预期 X 尺寸是打印机像素大小的整数倍尤其重要。如果不这样做,将导致元素(条和空格)宽度不稳定 - 原本具有相同宽度的元素可能会因一个打印点而有所不同。这是因为可用的 X 尺寸集仅由每个窄元素的打印点数决定,并且您无法将小数点分配给条。

Code 128 (ISO/IEC 15417) 规范对符号生成软件提出了以下要求:

用于在基于像素的打印机上创建条形码的图形软件 必须将每个条和空间精确缩放到像素间距 正在使用打印机。对于边缘到相似边缘可解码符号系统 像 Code 128 一样,组成每个符号字符的像素数 必须是模块数量的固定且恒定的整数倍 在符号字符中。

由此推论,物理符号大小必须根据打印机的点距以量子方式增长。因此,不可能满足使用每种型号打印机的每种应用所需的尺寸限制。对齐良好的符号不能简单地稍微大一点或小一点,以满足某些标称尺寸或最佳地填充所需的空间,同时保持正确地适合输出设备的物理打印特性。

例如,贸易项目上的 2D 符号的 GS1 通用规范“不在 POS、零售、分销或受监管的医疗保健中扫描”(SST 4) 定义了 X 尺寸的允许范围为 0.380 - 0.495mm。这可以通过定制 5 dpmm(每毫米点数)打印机通过在每个窄条上打印两个点来实现,但使用更常见的 8 dpmm 打印机完全无法实现,即使它是更高分辨率的设备:三个 0.125 毫米点将是矮小;四个 0.125mm 的点就显得过大了。

此外,在栅格化矢量路径描述时,必须确保原点与设备的点网格正确对齐。通过这种方式,您可以避免由于像素掠过而将原本具有相同宽度的条形栅格化为不同宽度,如下图所示,其中在不同的 X 坐标处渲染时,相同的线宽会渲染为不同的打印宽度:

如果不遵循上述建议,将会导致图像的某些条形变粗,如下图所示:

最左边的图像代表高分辨率印象;中间的图像代表渲染为低分辨率印象(按比例缩放)的相同符号,该符号已正确网格拟合并且将完美扫描,因为尽管分辨率较低,条形空间图案与最左边的图像相同;最右边的图像是相同的低分辨率印象,但在这种情况下,网格安装不正确,并且不会扫描,因为条形空间图案已损坏。

顺便说一句,请注意,当放大中间图像时(出于演示目的),抗锯齿仅应用于文本,而不应用于条形。如前所述,这对于确保为解码过程提供符号元素之间的准确距离至关重要。

对于某些打印过程,软件可能还需要通过将所有条的宽度减少一个小的固定量来补偿“打印增长”(由于过程中的墨水渗色和其他缺陷),同时保持精确的边缘到- 边缘间距。

ISO/IEC 15417 对后一个过程的描述如下:

设计的通用打印软件 为了支持多种打印机,应该为用户提供 调整 X 尺寸和条宽度增长或损失的能力。

条宽减小的使用应仅限于补偿打印过程中的物理缺陷,例如油墨羽化。根据技术的不同,条宽度调整的程度可能需要定期重新校准。条宽度减小不能充分补偿由于未正确对齐和网格安装图像描述而导致的像素掠过。

即使您完全遵循上述所有建议,某些设备和驱动程序包含的高级功能(超出常规的抗锯齿功能)可能会导致打印完美条形码符号的尝试失败,特别是当光栅化涉及缩放图像时,甚至按整数倍缩放时:

  • 一些 RIP 可能会尝试保留线条的宽度,以确保线条艺术的均匀“厚度”,但在这样做时,它们将调整条宽度与空间宽度的相对比率。人眼很难用条形码观察到这种效应。它可能被认为是打印增长现象的一种变化,但其中条形受到某种统一比例因子而不是固定量的影响。
  • 某些 RIP 可能会将某个区域内的高频规则线条视为一种阴影形式,然后尝试通过引入原始宽度的附加线条来在缩放时保持线条距离或完全替换来保留感知的灰度级别具有半色调网屏的区域内的线条。

总之,在目标设备的分辨率已知的情况下,生成具有实际可实现的 X 尺寸、良好网格拟合的源条形码图像,并且最好源图像像素或路径描述直接与设备点对齐,以便以避免对图像进行所有不必要的处理。每当打印系统的任何组件(硬件或软件)发生变化时,请务必重新验证打印的符号。

这个答案 https://stackoverflow.com/a/31814413/2568535演示了如果不遵循这些过程控制会发生什么情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成可可靠扫描的小型、高密度线性条形码? 的相关文章

  • 如何从 Visual Studio (2003) 中运行我的 Windows CE 项目?

    我正在开发一个遗留应用程序 需要在 VS 2003 中继续 但是 我无法有效地调试它 因为当我尝试运行它时 我收到以下对话框 Deploy 选择要定位的设备 如果所选设备上尚未安装 NET Compact Framework 它将与您的应用
  • 修复生成条形码时“GDI+ 中发生一般错误”的问题

    我正在用 C 编写一个条形码生成器 我可以将条形码生成为位图 并可以在 Picturebox WindowsForms 中显示它们 另一方面 我无法将条形码保存为 gif 或 jpeg 文件 我的条形码是位图文件 这是我的代码 Bitmap
  • 如何使用 android 中的 zxing 库从相机预览中解码条形码?

    我想在我的 android 应用程序中实现独立的扫描仪 我在我的项目中使用 zxing 的 core jar 库 我需要从相机预览中解码条形码 但我不知道如何实现它 因为没有官方文档 您能为我提供一个有关以下事项的简单示例吗 1 初始化相机
  • 如何在Android中询问相机的运行时权限,运行时存储权限

    我正在开发一个应用程序 只需单击按钮即可扫描条形码 并且它在 Lollipop 版本上运行良好 当我来到棉花糖时它就停止工作了 这是错误 camerabase 连接到相机 0 时发生错误 它迫使我通过以下方式打开权限 设置 gt 应用程序
  • Android 上的 ZXing PDF417

    有人能读到吗PDF417 http en wikipedia org wiki PDF417条形码与使用ZXing http code google com p zxing Android 操作系统上的库 他们支持这一点 根据他们的页面 它
  • 使用python读取条形码

    我想用 python 读取条形码 我搜索了支持条形码读取并且也支持python 2 7的库 但我没有找到任何东西 有什么图书馆可以帮助我吗 另外 如果您知道有关条形码读取的任何教程 请告诉我在哪里可以找到 迟到总比不到好 Pyzbar ht
  • 将 PreviewKeyDown 中收到的密钥转换为字符串

    我在窗口上使用 PreviewKeyDown 事件来接收来自条形码扫描仪的所有键 KeyEventArgs 是一个枚举 没有给我实际的字符串 我不想使用 TextInput 因为某些键可能由控件本身处理 并且可能不会冒泡到 TextInpu
  • 如何在c#中打印条形码格式[重复]

    这个问题在这里已经有答案了 我有一个 radgridview 其中使用显示数据库中的列 现在我想打印条形码格式 我必须首先将列值转换为位图 然后在页面上显示内容 我还想在单个页面上打印 radgridview 的每一行 然后 我有一个像这样
  • 如何使用带有校验位的 ZPL 创建 GS1-128 条形码

    我需要使用 ZPL 生成 GS1 128 条形码 它需要包含一个校验位 我似乎没有得到校验位 Here is my code BCN 088 Y Y Y D FD 00 00123456000057763 FS The first Y is
  • 在 Web 应用程序中使用条形码渲染框架生成条形码

    我正在使用条形码渲染框架来生成条形码 我已经下载了他们的dll 我可以看到 如何在 Windows 应用程序中完成它 我想做同样的事情 即生成条形码并在网络应用程序中使用它 以下是可以使用的问题的链接 适用于 NET 的免费条形码 API
  • AVCaptureSession条码扫描

    我目前正在与AVCaptureSession and AVCaptureMetadataOutput 它工作得很好 但我只想知道如何指示仅在特定区域扫描和分析元数据对象AVCaptureVideoPreviewLayer 这是我项目中的代码
  • 条码字体与条码打印机字体有什么区别

    有人知道条形码字体 在报告中用作字体 和直接从条形码打印机打印的字体之间的区别吗 为什么条码字体前后要加星号 据我了解 当我们使用条形码打印机时 我们不需要它 为什么不呢 星号字符是规范的一部分Code 39 http en wikiped
  • C# 中条形码图像到 Code39 的转换?

    我有 jpg 格式的条形码图像 想从中提取条形码 请帮忙 我们开发了一个 C 组件 可以从所有尺寸 旋转 质量等的条形码中读取值 它尚未发布 但我们将在以下位置发布有关它的详细信息 http blog lemqi com http blog
  • 从扫描的 GS1 类型条形码中提取信息

    我还想从扫描的 GS1 条形码消息中确定产品信息 例如描述 制造商和有效期 我怎样才能做到这一点 获取以 GS1 应用标识符标准格式存储数据的 GS1 类型条形码所表示的信息涉及两个过程 萃取通过扫描符号获得的 GS1 结构数据中包含的数据
  • 条形码(Code 128)字体有问题无法扫描

    很容易生成一个3 of 9 http www squaregear net fonts free3of9 shtml条形码使用Font Font f new Font Free 3 of 9 80 this Font f Label l n
  • 任何免费的 UPC/条形码 DB [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • libdmtx 死了吗,建议替换吗?

    我一直在使用libdmtx http www libdmtx org在一个项目中并希望更新到较新的版本 但该项目似乎已经一年多没有更新了 最后一次更新 版本是 2011 年 6 月 Git 存储库 http libdmtx git sour
  • 将 ZXing 库直接集成到我的 Android 应用程序中

    我写这篇文章纯粹是出于绝望 我被指派为 Android 1 6 手机制作一个独立的条形码扫描仪 作为概念证明 为此我发现了 ZXing 库 我用谷歌搜索过 在 StackOverflow 上阅读相关主题 使用常识等等 似乎没有任何帮助 我就
  • 使用 Swift PDF417 解码并生成相同的条形码

    我有以下 PDF417 条形码示例 可以使用在线工具进行解码 例如zxing https zxing org w decode jspx 结果如下 5wwwwwxwww0app5p3pewi0edpeapifxe0ixiwwdfxxi0xf
  • 如何解码 U.P.S.来自 UPS MaxiCode 条形码的信息?

    我最近购买了一个二维条形码阅读器 扫描 U P S 时条形码 我得到了大约一半我想要的信息 其中大约一半看起来以某种方式加密了 我听说有一个 UPS DLL 示例 粗体的所有内容似乎都已加密 而非粗体文本包含有价值的合法数据 gt 0196

随机推荐

  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 以编程方式创建进度绘制

    我有一个场景 我需要有大量的进度条可绘制对象 我无法为所有这些创建 xml 资源 因为我希望用户选择一种颜色 然后用于动态创建可绘制对象 下面是 xml 中的一个这样的可绘制对象 我如何以编程方式创建这个精确的可绘制对象
  • Mongoose 更新或插入许多文档

    我正在尝试使用最新版本的 mongoose 插入对象数组 或者更新相应的产品 ID 是否已存在 我一生都无法找出正确的使用方法 bulkWrite updateMany 等 而且我似乎无法在不出现错误的情况下找出语法 例如 我正在尝试 Pr
  • 在等式约束的情况下求解线性规划

    我问了一个问题 可以在这里找到 计算最优组合 https stackoverflow com questions 17232596 computing the optimal combination 并有人建议线性规划 我查阅了线性规划和单
  • 从以元组为键的字典中获取 pandas 数据框

    我是Python新手 并且已经在这个问题上挣扎了一段时间 我有一个这样的字典 dict1 a a 5 a b 10 a c 11 b a 4 b b 8 b c 3 我想做的是将其转换为 pandas 数据框 如下所示 a b c a 5
  • 无法在 Eclipselink 上合并日期

    我的会话 bean 不会对托管实体执行更新 我已经包含了相关类的代码 当我使用 prime faces 计划组件修改事件的日期字段并将修改后的实体传递给会话 bean 并调用 em merge event 时 实体管理器不会尝试更新实体 并
  • 使用文本框搜索 datagridview 中的列 (vb.net)

    如何使用文本框搜索 datagridview 中的列 我正在使用 vb net 2010 我有一个带有数据源的 Datagridview 下面是我用于填充 datagridview 的代码 网格视图将有 4 列 Private Sub Lo
  • 将 ddply + mutate 与自定义函数一起使用?

    I use ddply相当频繁 但历史上有summarize 偶尔mutate 并且只有基本功能 例如mean var1 var2等等 我有一个数据集 我试图在其中应用一个自定义的 更复杂的函数 并开始尝试深入研究如何做到这一点ddply
  • 对自定义类进行排序而不使用“key”参数?

    您可以对数组进行排序myclass通过使用key论证sorted功能 sortedlist sorted myclasses key lambda obj obj myproperty 有没有办法为我们的班级定义自然顺序 也许有一些神奇的方
  • 我应该在我的网站的什么位置添加他人作品的版权声明? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的网站包含 1 FancyBox 用于图像叠加 2 GalleryView 滑块 并且都使用 JQuery 它们都可以免费使用 但它们坚
  • 创建 Android 智能应用横幅

    Android 设备有类似 iOS 6 智能应用横幅的解决方案吗 这是智能应用横幅的代码 从 Chrome 44 Beta 开始 您可以在 Android 版 Chrome 中推送您的应用程序 您网站上的本机应用程序安装横幅 请看下面的答案
  • 像程序一样执行快捷方式

    示例 你有一条捷径s to SomeProgram在当前目录中 In cmd exe 您可以输入s它将启动该程序 在 PowerShell 中 输入s gives The term s is not recognized as a cmdl
  • 为什么 DropDownList.SelectedIndexChanged 事件不触发?

    我有一个绑定到 ObjectDataSource 的 DropDown 在其数据绑定事件中 我在 0 索引上添加 select 值 我在页面上有一个 LinkBut ton 在其客户端单击时 我在下拉列表中选择不同的项目 使用 JavaSc
  • 附加的新行的行为与前一行(行)不同

    我有一个 HTML 表格 里面有几个td as input字段 我的表格是动态的 当页面加载时 我将附加表格的第一行并且focus在第一个输入字段中 就我而言 即Item Name 我的行中有 3 个输入字段 它们是Item Name Un
  • 这是 Firefox 中的错误还是 chrome 主动修复了我做错的事情?

    当麦克风的信号超过设定的阈值时 下面的代码只是将一个框变成红色 它在 Linux 上的 chromium 和 Windows 上的 chrome 上快乐地运行一整天 它在两个平台上的 Firefox 上也运行良好 大约 15 秒 当它在 F
  • Drupal 6 和 7 从标头中取消设置 Javascript

    编辑 我的问题适用于 Drupal 6 和 7 尽管我的代码示例是 Drupal 6 人们提供的答案对于 Drupal 的两个版本都很有用 我目前正在 Drupal 中为 Drupal 6 网站创建移动主题 并尝试通过以下方式删除所有不必要
  • jquery - 不是函数错误

    这是我的代码 function fn pluginbutton function options myoptions extend left true return this each function var focus false if
  • 当服务器仅从请求中读取标头时,Http 客户端未收到响应

    我在 Java 中搞乱了 HTTP 和套接字 希望你能对此有所了解 当我用 Java SE 11 编写的 HTTP 服务器没有读取整个请求然后响应时 客户端不会收到它或收到错误 这是为什么 在服务器读取整个请求之前 客户端是否无法读取响应
  • 如何生成可可靠扫描的小型、高密度线性条形码?

    我正在努力将 POS 系统集成到我的网站 所以我想生成条形码 我使用 SKU 作为数据字段来编码甲酸盐是XXXXX XXX XXX XXX X 是从 0 到 9 的数字 所以经过研究 我发现代码 128 是最好的纠正我的方法 如果我错了 尺