Работа с растровыми изображениями на принтер этикеток 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"

Он печатает бессмысленный квадрат, который выглядит так, будто кто-то применил шумовой фильтр в Photoshop. Я нашел это решение на веб-сайте Zebra, но это изображение было 255/255, мне нужно это для изображения 50/50, но я понятия не имею, на что я должен изменить смещение или bitmapDatalength...

2 ответа

У меня была такая же проблема, и я решил ее следующим образом. технически, не знаю как, но попробуй...

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

Первая строка представляет размер изображения (размер файла) в байтах - 62 Вторая строка представляет размер заголовка изображения (62)

Надеюсь это поможет

Является ли ваша растровая 1-битная глубина цвета? Вы не можете отправлять такие цветные изображения, их нужно преобразовать в ч / б 1 бит на пиксель. Вы также должны убедиться, что ваш bitmapDataLength переменная верна. Это должно быть количество байтов изображения, которое будет отправлено на принтер. Увидеть ^GF команда в руководстве ZPL. Вы также можете посмотреть в руководстве пример после команды ~DG, если хотите сохранить изображение на своем принтере.

Если вам просто нужно преобразовать пару изображений и сохранить их, вы можете использовать мастер преобразования графики в ZebraNet Bridge. Он позаботится о преобразовании цветов и математической обработке ZPL ^GF, а также вы можете сохранить изображение на своем принтере.

Другие вопросы по тегам