c# - 使用 C# 将 png 文件转换为 pcx 文件

标签 c# winforms png file-conversion pcx

我正在尝试将 .png 文件转换为 .pcx 文件。场景如下:

我使用的是 TSC TTP-343C 标签打印机。在标签上我必须打印图像。 TSC 提供了一个 library documentation对于开发人员。由于我只能使用 pcx 文件在这些标签上打印图像,因此我必须将所有图像转换为 pcx 图像。任何其他格式甚至不正确的 pcx 格式(例如,如果用户刚刚重命名文件结尾)都不会打印在标签上。

我看过 this post链接到 Magick 库。在这篇文章中,OP 试图将 bmp 文件转换为 pcx 文件,这并不是我想要实现的。我查看了 Magick documentation关于converting images .我尝试将图像转换为:

using (MagickImage img = new MagickImage(png)) // png is a string containing the path of the .png file
{
    img.Format = MagickFormat.Pcx;
    img.Write(pcx); // pcx is a string containing the path of the new .pcx file
}

不幸的是,这没有正确保存图像。标签打印机仍然无法在标签上打印图像。我试着打印一个正确的 pcx 文件,这工作正常。所以我猜它仍然无法正常工作的唯一原因是转换后的文件不是真正的 pcx 文件。

有没有办法进行这样的转换?如果是,我该如何实现?我的应用程序是一个 Windows 窗体应用程序,使用 .NET Framework 4.5.2 用 C# 编写。

编辑:

在这里您可以看到一个如何使用 pcx 文件打印标签的示例:

TSC.openport(sPrinterName);
TSC.setup("100", "100", "4", "8", "1", "3.42", "0");
TSC.clearbuffer();

TSC.downloadpcx(@"\\PathToPcxFile\test.pcx", "test.pcx");
TSC.sendcommand("PUTPCX 35," + y + ",\"test.pcx\"");

TSC.printlabel("1", "1");
TSC.closeport();

此代码适用于真实的 pcx 文件。 TSC 库的方法你能找到吗 here .

downloadpcx(a,b)

Description: Download mono PCX graphic files to the printer Parameter:

a: string; file name (including file retrieval path)

b: string, names of files that are to be downloaded in the printer memory (Please use capital letters)

Source: http://www.tscprinters.com/cms/upload/download_en/DLL_instruction.pdf

编辑二:

一个正在工作的 pcx 文件(使用 photoshop 创建)看起来像这样(如果它对您有帮助的话):

enter image description here

最佳答案

PCX files是(充其量)基于调色板的。

因此,要创建有效的 pcx 输出,您需要添加这一行:

using (MagickImage image = new MagickImage(sourcePng))
{
    image.Format = MagickFormat.Pcx;
    image.ColorType = ColorType.Palette;  // <----
    image.Write(targetPcx);
}

Your image as pcx file

关于c# - 使用 C# 将 png 文件转换为 pcx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777327/

相关文章:

compression - 构建快速 PNG 编码器问题

image - 格式无效 : not a PNG file

css - 颜色之上的透明图像

c# - 是否有 Rob Conery 的 Massive for NoSQL (MongoDB) 的等价物?

c# - 从 LINQ to SQL 查询加载 DataGridView

c# - Linq Getting Customers 按日期分组,然后按类型分组

winforms - Windows 窗体在 Visual Studio 窗体设计器中消失了

c# - 获取对象的所有属性

C#读取Excel文件时出错,这是一个奇怪的错误

带有文本和向下箭头的 C# 按钮