2
    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"

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

4

2 回答 2

1

我有同样的问题并像这样解决。从技术上讲,不知道如何,但是尝试一下...

Dim bitmapDataLength As Integer = 338 Dim bitmapDataOffset As Integer = 62

第一行表示图像大小(文件大小)以字节为单位 - 62 第二行表示图像的标头大小(62)

希望这可以帮助

于 2012-07-11T08:10:19.320 回答
1

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

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

于 2012-07-10T13:27:51.953 回答