如何生成动态 GRF 图像以进行 ZPL ZEBRA 打印

2023-11-24

我有个问题。

我正在生成动态 BMP 图像并尝试通过 ZPL 命令将其发送到 ZEBRA 打印机。 我需要将 BMP 图像转换为 GRF 图像。我认为 BMP 图像提取的十六进制不正确。

打印的图像模糊且不正确。

这是我的代码:

string bitmapFilePath = @oldArquivo;  // file is attached to this support article
byte[] bitmapFileData = System.IO.File.ReadAllBytes(bitmapFilePath);
int fileSize = bitmapFileData.Length;

Bitmap ImgTemp = new Bitmap(bitmapFilePath);
Size ImgSize = ImgTemp.Size;
ImgTemp.Dispose();

// The following is known about test.bmp.  It is up to the developer
// to determine this information for bitmaps besides the given test.bmp.            
int width = ImgSize.Width;
int height = ImgSize.Height;
int bitmapDataOffset = 62; // 62 = header of the image
int bitmapDataLength = fileSize - 62;// 8160;    

double widthInBytes = Math.Ceiling(width / 8.0);    

// Copy over the actual bitmap data from the bitmap file.
// This represents the bitmap data without the header information.
byte[] bitmap = new byte[bitmapDataLength];
Buffer.BlockCopy(bitmapFileData, bitmapDataOffset, bitmap, 0, (bitmapDataLength));

// Invert bitmap colors
for (int i = 0; i < bitmapDataLength; i++)
{
    bitmap[i] ^= 0xFF;
}

// Create ASCII ZPL string of hexadecimal bitmap data
string ZPLImageDataString = BitConverter.ToString(bitmap).Replace("-", string.Empty);

string comandoCompleto = "~DG" + nomeImagem + ".GRF,0" + bitmapDataLength.ToString() + ",0" + widthInBytes.ToString() + "," + ZPLImageDataString;

尝试以下代码。未测试!

public static string CreateGRF(string filename, string imagename)
{
    Bitmap bmp = null;
    BitmapData imgData = null;
    byte[] pixels;
    int x, y, width;
    StringBuilder sb;
    IntPtr ptr;

    try
    {
        bmp = new Bitmap(filename);
        imgData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format1bppIndexed);
        width = (bmp.Width + 7) / 8;
        pixels = new byte[width];
        sb = new StringBuilder(width * bmp.Height * 2);
        ptr = imgData.Scan0;
        for (y = 0; y < bmp.Height; y++)
        {
            Marshal.Copy(ptr, pixels, 0, width);
            for (x = 0; x < width; x++)
                sb.AppendFormat("{0:X2}", (byte)~pixels[x]);
            ptr = (IntPtr)(ptr.ToInt64() + imgData.Stride);
        }
    }
    finally
    {
        if (bmp != null)
        {
            if (imgData != null) bmp.UnlockBits(imgData);
            bmp.Dispose();
        }
    }
    return String.Format("~DG{0}.GRF,{1},{2},", imagename, width * y, width) + sb.ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成动态 GRF 图像以进行 ZPL ZEBRA 打印 的相关文章

随机推荐

  • 如何使用 Webpack 导出函数并在 HTML 页面中使用它?

    我有一个名为index js use strict var require jquery window jQuery export function foo console log hello world 并且在同一个目录下 webpack
  • 如何摆脱Django Form的RadioSelect生成的虚假选择

    我在 Django 1 3 上使用 ModelForm 模型 py class UserProfile models Model gender models CharField max length 1 blank True choices
  • 如何对数据集进行排序?

    我有包含表项目的数据集 如何按代码字段对该表进行排序 提前致谢 With DataTable 你通常会排序一个DataView 例如 DataTable table dataSet Tables foo DataView view tabl
  • 突出显示文本,html 标签除外

    我使用下面的代码突出显示文本中的一些关键字 message str ireplace words span class hightlighted text words span message 文本可能包含一些html标签 例如 img s
  • 我可以将 MSVCRT 与 mingw 静态链接吗?

    我有编译用的 C 程序mingw在 Windows 上 它工作正常但需要MSVCRT DLL 我想静态链接它 就像我在 Visual Studio 中可以做的那样 这可能吗 I tried static标记为gcc它没有做出任何改变 也使用
  • Android - AlertDialog 样式

    我的应用程序中有一个警报对话框 如下所示 我希望标题和分隔标题 消息正文的线为橙色 我怎样才能做到这一点 我尝试的是使用自定义样式 如下所示 但这没有用 我的警报对话框代码 AlertDialog Builder alertDialog n
  • pymc3:具有多个观察变量的分层模型

    我有一个简单的分层模型 其中有很多个体 我有来自正态分布的小样本 这些分布的均值也遵循正态分布 import numpy as np n individuals 200 points per individual 10 means np r
  • 将 bytea 转换为二进制字符串

    我需要解码一个 Base64 字符串并获取一块二进制文件 Postgres中是否有一个SQL函数可以简单地转换bytea转换为二进制字符串表示形式 Like 00010001010101010 如果您的 Postgres 安装使用默认设置运
  • 如何选择具有给定类名的第一个、第二个或第三个元素?

    如何在元素列表中选择某个元素 我有以下内容 div class myclass my text1 div div p stuff p div div p more stuff p div p span Hello World span p
  • PHP GD如何在一条线上绘制文本

    The final output should be like image HELLO WORLD 这就是我正在做的 im imagecreate 400 400 txtcol imagecolorallocate im 0xFF 0x00
  • Android 打开外部存储目录(sdcard)用于存储文件

    我想打开外部存储目录路径以编程方式保存文件 我尝试过但没有获取 SD 卡路径 我该怎么办 有什么解决办法吗 private File path new File Environment getExternalStoragePublicDir
  • 延长课程是一个好的做法吗?

    我的数据库类中有一个 PDO 连接 最近我一直使用它作为其他类的扩展 即class Users extends Database这使我能够始终保持数据库连接 而无需在我的 Users 类中拥有函数 然而 有人指出我不应该这样做 因为这是一种
  • 分号有什么作用?

    我在网上找到了一个函数来帮助我完成当前的项目 并且它的某些行上有分号 我想知道为什么 是为了破坏功能吗 def containsAny self strings alphabet abcdefghijklmnopqrstuvwxyz0123
  • JQuery/JQuery UI 水平分隔线

    最近 我正在开发一个网站 我想创建一个水平分隔线 能够使用 jquery 调整页面上两个元素的大小 基本上 Content 您还可以查看UI Layout jQuery 插件 这是一个demo
  • 如何在链接的 npm 依赖项(开发中)和已安装的依赖项(暂存/生产中)之间切换?

    我正在开发一个自定义 npm 模块 并且它有一个 GitHub 存储库 我还在开发一个使用自定义模块的项目 当处理较大的项目时 使用它是很好的npm link这样我就可以对模块进行更改并立即在主项目中看到它们 To deploy to st
  • 在flutter中,如何将facebook受众作为中介网络与Admob集成?

    我是广告中介新手 我有一个 flutter 应用程序 并且使用以下 admob flutter 插件集成了 admob 并且它在 Android 和 iOS 上运行良好 https pub dev packages admob flutte
  • 暴雪官方魔兽世界 API 在哪里?

    我想知道是否可以通过 API 访问 魔兽世界 我的要求非常明确 必须是暴雪官方API 必须可以在游戏外访问 暴雪现已发布社区 API 允许您直接从暴雪服务获取信息 例如领域状态 玩家和拍卖数据 https dev battle net io
  • 使用构建参数构建 Docker 映像并将其从 DevOps 推送到 ACR

    我正在 Azure DevOps 管道中构建 Docker 映像 然后我想将其推送到 Azure 容器注册表 注册表已创建 并且我已配置 DevOps 来使用它 还有buildAndPushDocker任务 works 然而 由于 Dock
  • Android - 检索联系人照片并显示

    我正在创建一个简单的应用程序 用于检索每个联系人的姓名和电话号码 并在列表视图中显示 并在行开头的缩略图大小的图像视图中显示联系人的照片 我已成功检索并显示姓名和号码 但在浏览了许多教程和堆栈后未能显示照片 我最终将其恢复为仅显示姓名和号码
  • 如何生成动态 GRF 图像以进行 ZPL ZEBRA 打印

    我有个问题 我正在生成动态 BMP 图像并尝试通过 ZPL 命令将其发送到 ZEBRA 打印机 我需要将 BMP 图像转换为 GRF 图像 我认为 BMP 图像提取的十六进制不正确 打印的图像模糊且不正确 这是我的代码 string bit