使用C#将PNG文件转换为PCX文件

6

我想将一个 .png 文件转换成 .pcx 文件。场景如下:

我正在使用 TSC TTP-343C 标签打印机,需要在标签上打印图像。TSC 为开发者提供了一个库文档。由于我只能通过使用 pcx 文件在这些标签上打印图像,所以我需要将所有的图像转换为 pcx 图像。任何其他格式,甚至是错误的 pcx 格式(例如用户仅更改了文件扩展名),都无法打印到标签上。

我看到了这篇文章,它链接到了 Magick 库。在这篇文章中,OP 正试图将 bmp 文件转换为 pcx 文件,这与我的目标不完全相同。我查看了 Magick文档有关转换图像的内容。我尝试像这样转换图像:

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
}

很遗憾,这种方法不能正确保存图像。标签打印机仍然无法在标签上打印图像。我尝试打印一个 correct pcx 文件,这个可以正常工作。所以我想唯一的原因就是转换后的文件不是真正的 pcx 文件。
有没有一种方法来进行这种转换?如果有,我该如何实现?我的应用程序是一个窗体应用程序,使用 .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库的方法。

downloadpcx(a,b)

描述:将单色PCX图形文件下载到打印机中的参数:

a:字符串;文件名(包括文件检索路径)

b:字符串,要下载到打印机内存中的文件名称(请使用大写字母)

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

EDIT II:

一个有效的PCX文件(使用Photoshop创建)如下所示(如果有帮助):

enter image description here


你有看到关于 pcx 格式 的任何信息吗?或者你能提供一个可用的示例链接吗?你需要颜色吗? - TaW
@TaW 我在文档中找不到特定的格式。我在我的问题中添加了一个工作示例(仅适用于正确转换的pcx文件),请看一下。颜色不是必需的。我猜打印机甚至不能打印颜色。 - roemel
@TaW 我在我的问题中添加了一个可工作的PCX文件截图。希望对你有所帮助。 - roemel
1个回答

6

PCX文件最好以调色板为基础。

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

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

Your image as pcx file


4
你不知道我现在有多感激!非常感谢你。 - roemel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接