2016-03-03 8 views
5

Ich versuche, eine .png Datei in eine .pcx Datei zu konvertieren. Das Szenario ist das folgende:konvertieren Sie eine PNG-Datei in eine pcx-Datei mit C#

Ich benutze einen TSC TTP-343C Etikettendrucker. Auf den Etiketten muss ich Bilder drucken. TSC bietet eine library documentation für Entwickler. Da ich mit pcx-Dateien nur Bilder auf diesen Etiketten drucken kann, muss ich alle Bilder in pcx-Bilder umwandeln. Jedes andere Format oder sogar ein falsches pcx-Format (z. B. wenn der Benutzer gerade die Dateiendung umbenannt hat) wird nicht auf dem Etikett gedruckt.

Ich habe this post Verknüpfung mit der Magick Bibliothek gesehen. In diesem Post versucht das OP, eine bmp-Datei in eine pcx-Datei zu konvertieren, was nicht genau das ist, was ich erreichen möchte. Ich schaute auf die Magickdocumentation über converting images. Ich habe versucht, die Bilder wie zu konvertieren:

Leider speichert dies nicht das Bild korrekt. Der Etikettendrucker kann das Bild immer noch nicht auf dem Etikett drucken. Ich habe versucht, eine korrekte pcx-Datei zu drucken und das hat gut funktioniert. Ich denke, der einzige Grund, warum es immer noch nicht funktioniert, ist, dass die konvertierte Datei keine echte pcx-Datei ist.

Gibt es eine Möglichkeit, eine solche Konvertierung durchzuführen? Wenn ja, wie kann ich das erreichen? Meine Anwendung ist eine Windows Forms-Anwendung, geschrieben in C# mit .NET Framework 4.5.2.

EDIT:

Hier sehen Sie ein Beispiel sehen können, wie ein Etikett mit einer PCX-Datei drucken:

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(); 

Dieser Code funktioniert auf realen PCX-Dateien. Die Methoden der TSC-Bibliothek finden Sie unter here.

downloadpcx (a, b)

Beschreibung: Download Mono PCX Grafikdateien an den Drucker Parameter:

ein: string; Dateiname (einschließlich Dateiabruf Pfad)

b: string, Namen von Dateien, die im Druckerspeicher geladen werden sollen (Bitte verwenden Sie Großbuchstaben)

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

EDIT II:

Eine pcx-Datei, die funktioniert (erstellt mit Photoshop) sieht so aus (wenn es Ihnen hilft):

enter image description here

+0

Haben Sie etwas über das [PCX-Format] (siehe https://en.wikipedia.org/wiki/PCX) ist ok? Oder können Sie mit einem Arbeitsbeispiel verlinken? Brauchst du Farben? – TaW

+0

@TaW Ich kann in der Dokumentation kein bestimmtes Format finden. Ich habe ein funktionierendes Beispiel (nur mit korrekten konvertierten pcx-Dateien) zu meiner Frage hinzugefügt, bitte sehen Sie es sich an. Farben werden nicht benötigt. Der Drucker ist nicht einmal in der Lage, Farben zu drucken, denke ich. – Roman

+0

@TaW Ich habe einen Screenshot einer PCX-Datei hinzugefügt, die auf meine Frage hinarbeitet. Hoffe es hilft dir. – Roman

Antwort

6

PCX files werden (am besten) Palette basiert.

So eine gültige PCX Ausgabe erstellen müssen Sie diese eine Zeile hinzufügen:

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

Your image as pcx file

+3

Sie wissen nicht, wie dankbar ich gerade bin! Vielen Dank. – Roman