Преобразовать файл png в файл pcx, используя C#
Я пытаюсь преобразовать .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
}
К сожалению, это не правильно сохраняет изображение. Принтер этикеток все еще не может распечатать изображение на этикетке. Я попытался распечатать правильный файл pcx, и это работало нормально. Так что я думаю, единственная причина, по которой он все еще не работает, заключается в том, что преобразованный файл не является настоящим файлом pcx.
Есть ли способ сделать такое преобразование? Если да, как я могу этого достичь? Мое приложение представляет собой приложение Windows Forms, написанное на C# с использованием.NET Framework 4.5.2.
РЕДАКТИРОВАТЬ:
Здесь вы можете увидеть пример, как напечатать этикетку с файлом 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 (а, б)
Описание: Загрузить моно PCX графические файлы на принтер Параметр:
строка; имя файла (включая путь поиска файла)
b: строка, имена файлов, которые должны быть загружены в память принтера (используйте заглавные буквы)
Источник: http://www.tscprinters.com/cms/upload/download_en/DLL_instruction.pdf
РЕДАКТИРОВАТЬ II:
Работающий файл pcx (созданный с помощью фотошопа) выглядит следующим образом (если он вам помогает):
1 ответ
Файлы PCX (в лучшем случае) основаны на палитре.
Таким образом, чтобы создать действительный вывод pcx, вам нужно добавить одну строку:
using (MagickImage image = new MagickImage(sourcePng))
{
image.Format = MagickFormat.Pcx;
image.ColorType = ColorType.Palette; // <----
image.Write(targetPcx);
}