2016-03-03 40 views
5

Sto provando a convertire un file .png in un file .pcx. Lo scenario è il seguente:convertire un file png in un file pcx utilizzando C#

Sto utilizzando una stampante di etichette TSC TTP-343C. Sulle etichette devo stampare le immagini. TSC fornisce uno library documentation per gli sviluppatori. Dal momento che posso stampare solo immagini su quelle etichette usando i file PCX, devo convertire tutte le immagini in immagini PCX. Qualsiasi altro formato o formato pcx non corretto (ad esempio se l'utente ha appena rinominato il file che termina) non verrà stampato sull'etichetta.

Ho visto this post collegamento alla libreria Magick. In questo post, l'OP sta cercando di convertire un file bmp in un file pcx che non è esattamente quello che cerco di ottenere. Ho guardato il Magickdocumentation su converting images. Ho provato a convertire le immagini come:

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 
} 

Sfortunatamente questo non sta salvando l'immagine correttamente. La stampante per etichette non può ancora stampare l'immagine sull'etichetta. Ho provato a stampare un file pcx corretto e questo ha funzionato bene. Quindi credo che l'unica ragione per cui non funziona ancora è che il file convertito non è un vero file pcx.

C'è un modo per fare una tale conversione? Se sì, come posso ottenerlo? La mia applicazione è un'applicazione Windows Form, scritta in C# usando .NET framework 4.5.2.

EDIT:

Qui potete vedere un esempio di come stampare un'etichetta con un file 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(); 

Questo codice funziona bene su file PCX reali. I metodi della libreria TSC possono trovare here.

downloadpcx (a, b)

Descrizione: Scarica mono PCX file grafici al parametro della stampante:

un: string; il nome del file (compreso il recupero dei file percorso)

B: stringa, i nomi dei file che devono essere scaricati nella memoria della stampante (Si prega di utilizzare le lettere maiuscole)

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

EDIT II:

Un file pcx che funziona (creato utilizzando Photoshop) ha un aspetto simile a questo (se ti aiuta):

enter image description here

+0

Hai visto qualcosa su cui [formato PCX] (https://en.wikipedia.org/wiki/PCX) è ok? O puoi collegarti ad un esempio di lavoro? Avrai bisogno di colori? – TaW

+0

@TaW Non riesco a trovare un formato specifico nella documentazione. Ho aggiunto un esempio di lavoro (funzionando solo con i file pcx convertiti corretti) alla mia domanda, per favore dare un'occhiata. I colori non sono necessari La stampante non è nemmeno in grado di stampare i colori, credo. – Roman

+0

@TaW Ho aggiunto uno screenshot di un file PCX che sta funzionando alla mia domanda. Spero che ti aiuti. – Roman

risposta

6

PCX files sono (nella migliore delle ipotesi) palette-based.

Quindi, per creare un'uscita PCX valida è necessario aggiungere questa riga:

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

Your image as pcx file

+3

Non sai quanto sono grato adesso! Grazie mille. – Roman