首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ZPL标签打印机的位图

使用ZPL标签打印机的位图
EN

Stack Overflow用户
提问于 2012-07-10 06:25:28
回答 2查看 4.8K关注 0票数 2
代码语言:javascript
复制
    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中应用了噪波滤镜。我在斑马的网站上找到了这个解决方案,但是那个图像是255/255,我需要一个50/50的图像,但我不知道我应该将偏移量更改为什么或bitmapDatalength...

EN

回答 2

Stack Overflow用户

发布于 2012-07-10 21:27:52

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-07-11 16:10:19

我也有同样的问题,就这样解决了。从技术上讲,不知道怎么做,但试一下...

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

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

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11404087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档