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/