2016-03-03 21 views
5

Tôi đang cố chuyển đổi tệp .png thành tệp .pcx. Kịch bản như sau:chuyển đổi tệp png sang tệp pcx bằng C#

Tôi đang sử dụng máy in nhãn TSC-343C TSC. Trên nhãn tôi phải in hình ảnh. TSC cung cấp library documentation cho nhà phát triển. Vì tôi chỉ có thể in hình ảnh trên các nhãn đó bằng tệp pcx, tôi phải chuyển đổi tất cả hình ảnh thành hình ảnh pcx. Bất kỳ định dạng nào khác hoặc thậm chí là định dạng pcx không chính xác (ví dụ: nếu người dùng vừa đổi tên tệp kết thúc) sẽ không được in trên nhãn.

Tôi đã xem this post liên kết với thư viện Magick. Trong bài này, OP đang cố gắng chuyển đổi một tập tin bmp thành một tập tin pcx mà không phải là chính xác những gì tôi cố gắng đạt được. Tôi đã xem số Magickdocumentation về số converting images. Tôi đã cố gắng chuyển đổi các hình ảnh như:

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 
} 

Thật không may điều này không lưu hình ảnh chính xác. Máy in nhãn vẫn không thể in hình ảnh trên nhãn. Tôi đã thử in một tập tin pcx chính xác và điều này làm việc tốt. Vì vậy, tôi đoán lý do duy nhất tại sao nó vẫn không hoạt động là các tập tin chuyển đổi không phải là một tập tin pcx thực sự.

Có cách nào để thực hiện chuyển đổi như vậy không? Nếu có, làm thế nào tôi có thể đạt được điều đó? Ứng dụng của tôi là một ứng dụng biểu mẫu windows, được viết bằng C# bằng cách sử dụng .NET framework 4.5.2.

EDIT:

đây bạn có thể xem một ví dụ làm thế nào để in một nhãn với một 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(); 

Mã này hoạt động tốt trên các tập tin pcx thực. Các phương pháp của thư viện TSC bạn có thể tìm thấy here.

downloadpcx (a, b)

Mô tả: Tải về mono PCX file đồ họa để các thông số máy in:

một: string; tên file (bao gồm cả tập tin phục hồi đường dẫn)

b: string, tên của file sẽ được tải trong bộ nhớ máy in (Vui lòng sử dụng chữ in hoa)

Nguồn: http://www.tscprinters.com/cms/upload/download_en/DLL_instruction.pdf

CHỈNH SỬA II:

Tệp pcx đang hoạt động (được tạo bằng photoshop) trông như thế này (nếu nó giúp bạn):

enter image description here

+0

Bạn có thấy bất cứ điều gì về những [định dạng pcx] (https://en.wikipedia.org/wiki/PCX) là ok? Hoặc bạn có thể liên kết ví dụ làm việc của toa không? Bạn sẽ cần màu sắc? – TaW

+0

@TaW Tôi không thể tìm thấy định dạng cụ thể trong tài liệu. Tôi thêm một ví dụ làm việc (chỉ làm việc với các tập tin pcx chuyển đổi chính xác) cho câu hỏi của tôi, xin vui lòng có một cái nhìn. Màu sắc không cần thiết. Máy in thậm chí không thể in được màu mà tôi đoán. – Roman

+0

@TaW Tôi đã thêm ảnh chụp màn hình của tệp PCX đang hoạt động cho câu hỏi của mình. Hy vọng nó sẽ giúp bạn. – Roman

Trả lời

6

PCX files là (tốt nhất) dựa trên bảng màu.

Vì vậy, để tạo ra một sản lượng PCX giá trị bạn cần phải thêm một dòng này:

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

Your image as pcx file

+3

Bạn không biết làm thế nào biết ơn tôi ngay bây giờ! Cảm ơn nhiều. – Roman

Các vấn đề liên quan