vb.net - 在 ZPL 标签打印机上使用位图

标签 vb.net bitmapdata bmp zebra-printers zpl

    Dim bitmapFilePath As String = imagepath here...
    Dim bitmapFileData As Byte() = System.IO.File.ReadAllBytes(bitmapFilePath)
    Dim fileSize As Integer = bitmapFileData.Length

    Dim bitmapDataOffset As Integer = 0
    Dim width As Integer = 50 '255
    Dim height As Integer = 50 '255
    Dim bitsPerPixel As Integer = 1
    Dim bitmapDataLength As Integer = 400
    Dim widthInBytes As Double = Math.Ceiling(width / 8.0)

    Dim bitmap(bitmapDataLength) As Byte
    Buffer.BlockCopy(bitmapFileData, bitmapDataOffset, bitmap, 0, bitmapDataLength)


    For i As Integer = 0 To bitmapDataLength Step 1
        bitmap(i) = bitmap(i) Xor &HFF

    Next

    Dim ZPLImageDataString As String = BitConverter.ToString(bitmap)
    ZPLImageDataString = Replace(ZPLImageDataString, "-", String.Empty)

    Dim zplCommand(3) As String

    zplCommand(0) = "^XA"
    zplCommand(1) = "^FO20,20"
    zplCommand(2) =
    "^GFA, " +
    bitmapDataLength.ToString() + "," +
    bitmapDataLength.ToString() + "," +
    widthInBytes.ToString() + "," +
    ZPLImageDataString

    zplCommand(3) = "^XZ"

它打印出一个无意义的方 block ,看起来就像有人在 Photoshop 中应用了噪声过滤器。我在 Zebra 网站上找到了这个解决方案,但该图像是 255/255,我需要这个来生成 50/50 图像,但我不知道应该将偏移量或位图数据长度更改为什么...

最佳答案

您的位图是 1 位颜色深度吗?您不能像这样发送彩色图像,它们需要转换为每像素 1 位的黑白图像。您还需要确保您的 bitmapDataLength 变量正确。这应该是要发送到打印机的图像字节数。请参阅 ZPL Manual 中的 ^GF 命令。如果您想将图像保存在打印机上,您还可以查看手册中 ~DG 命令后的示例

如果您只需要转换几个图像并保存它们,您可以使用 ZebraNet Bridge 中的图形转换向导 。它会为您处理颜色转换和 ZPL ^GF 数学运算,您还可以选择将图像存储在打印机上。

关于vb.net - 在 ZPL 标签打印机上使用位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404087/

相关文章:

vb.net - devexpress CheckedComboBoxEdit.DataBindings 连接到 xpcollection

c# - 弹道库

VB.NET 强制继承多代

c# - 从像素数据的字节数组创建位图

flash - 如何从 BitmapData 中剪切出 Shape?

加载位图的C代码

jpa - 迁移 EJB2.x BMP 实体 bean

c# - 如何在不修改网页浏览器控件中的文档的情况下注入(inject)并执行javascript函数?

c++ - BMP 阅读器无法正常工作