ZPL命令をZebraプリンター(現時点ではGK420t)に送信したいと思います。 50mm x 20mmのラベルを印刷しています。ラベルの左上隅にロゴ(5mm x 5mmの小さい画像)を印刷してください。
これを行うために実行する必要がある手順を教えてください。
私はZPLマニュアルからいくつかのことを読んで試しましたが、それがどのように機能するのか本当に理解できず、実用的な例が見つかりませんでした。
最初に画像をプリンタに(いわゆる「記憶領域」/ DRAMに)「ロード」してから、印刷する必要があるようです。
.GRF
ファイル拡張子は、マニュアルで何度も言及されています。 .PNGまたは.BMP画像を.GRFファイルに変換するツールが見つかりませんでした。私は、.GRFファイルがASCIIグラフィックイメージの16進表記...であると読みました。
「Zebraセットアップユーティリティ」を使用して、「フォントとグラフィックのダウンロード」、使用可能な.MMFファイルの選択、.BMP画像の追加、[プリンターへの]ダウンロード、およびテストページの印刷により、ロゴをラベルに印刷できます。しかし、今までは、ZPL命令を使用してそれを行うことはできませんでした。
また、ラベルに5mm x 5mm程度の小さな画像を印刷する必要があるという事実を踏まえて、私が使用するのに最適な寸法は何かと思います。印刷した画像は40px x 40pxの画像です。また、元の画像から.GRFファイルを作成する必要がある場合、このファイルのタイプは何ですか(.BMP、.PNG、.JPG)?
続行方法を教えていただけますか?
既存のZPLコードがいくつかあるようですが、やりたいのはそれにイメージを追加することだけです。
その場合、おそらく最も簡単な解決策は Labelary online ZPL viewer に移動し、ZPLをビューアーに貼り付け、[画像を追加]をクリックして、追加する画像をアップロードすることです。 ZPL。
これにより、必要な画像ZPLコマンドを追加してZPLが変更され、位置などを微調整できます。
これが別のオプションです。Pythonで.GRFコンバーターに自分のイメージを作成しました。お気軽にご利用ください。
https://github.com/JoshMayberry/Utilities/blob/master/image2grf.py
from PIL import Image
import re
import numpy as np
def image2grf(filePath, length = None, width = None):
#Open the image
image = Image.open(filePath)
image = image.convert("1") #Ensure that it is black and white image
#Resize image to desired size
if ((length != None) and (width != None)):
size = (length, width)
image.thumbnail(size, Image.ANTIALIAS)
#Convert image to binary array
bitmap = np.asarray(image, dtype = 'int')
bitmap = np.asarray(bitmap, dtype = 'str').tolist()
#Convert binary array to binary string
binaryString = ""
for row in bitmap:
#Join the row to the string
row = "".join(row)
#Make each pixel square (for some reason it is rectangular)
binaryString += row
binaryString += row
binaryString += row
binaryString += row
#Convert binary string to hex string
hexString = re.sub("0","F",binaryString)
hexString = re.sub("1","0",hexString)
#Calculate bytes per row and total bytes
bytesPerRow = len(bitmap[0]) / 2
totalBytes = bytesPerRow * len(bitmap) * 4 #0.5 for each line piece in a line
#Compose data
data = "~DGimage," + str(totalBytes) + "," + str(bytesPerRow) + "," + hexString
#Save image
fileHandle = open(r"labelPicture.grf", "w")
fileHandle.write(data)
fileHandle.close()
if __name__ == '__main__':
image2grf(r"test.bmp")
ZebraDesignerをインストールし、空白のラベルを作成し、テンプレートに画像オブジェクトを挿入して、必要なロゴ画像を追加します。
このラベル(* .prnファイル)をファイルに出力し、最近作成されたファイルをNotepad ++で開きます(MS Notepadは、開いて保存するとデータを破壊します)。一見ランダムな文字の巨大な文字列を見つけ、あなたの画像のデータがあります。文字列全体が画像のテキスト表現であるため、コントロール文字を含め、これらの文字を失わないように注意してください(base64の場合と同様)。
Tip0: ZPLIIプログラマガイドを常に手元に用意してください。ZebraDesignerがメモリに画像を送信したか、プリンタバッファに直接送信したかを確認する必要があります。
Tip1:ロゴをラベルに追加してテキストを取得する前に、画像をグレースケール(プリンターのディザリング設定を確認してください!)、または私の場合は無地の白黒(最良の結果)にしてください私見では)。画像に色を付けることができます。ZebraDesignerは、コマンドやテキストに変換する前に、プリンタが画像をグレースケールに変換できるようにします。
Josh Mayberryのimage2grf.pyと同様に、PNG画像を.GRFに変換するためのPHPスクリプトを作成しました: https://Gist.github.com/thomascube/9651d6fa916124a9c52cb0d4262f2c3f
PHPのGd画像機能を使用しているため、Gdで開くことができるすべてのファイル形式で機能します。小さな変更で Imagick 拡張を使用できますが、Gdを使用するとパフォーマンスが向上するようです。
object ==> Pictureに移動すると、カーソルが他の何かに変わります。変更されたら、作業領域をクリックして、ダイアログボックスが表示されます。そこで、画像を選択して、画像を確認できます。 GT800を使用しているプリンターで印刷したいので、私にとっては、これが役立つことを願っています
Codeprojectのsharpzebraプロジェクトを試してください。プロジェクトの一部であるテストプログラムはグラフィックを印刷し、これは少なくともZM400で機能することを知っています