System.Drawing trong Linux

Nếu bạn đã từng chạy các ứng dụng .NET Core trên Linux, bạn có thể nhận thấy rằng một trong những vấn đề chính là thiếu cấu phần System.Drawing trong gói .NET Core tiêu chuẩn. Mặc dù Microsoft khuyến nghị sử dụng System.Drawing.Common, nhưng đó không phải là giải pháp cuối cùng. Bạn phải chạy ‘sudo’ trên mỗi máy người dùng để cài đặt thư viện libgdiplus. Và thậm chí sau đó, kết quả kết xuất của bạn sẽ hơi khác so với kết quả bạn có trên máy Windows. Để giải quyết vấn đề này, bài viết này trình bày cách sử dụng System.Drawing trong Linux mà không cần thư viện libgdiplus.

Sử dụng System.Drawing trên Linux

May mắn thay, bây giờ chúng tôi có một giải pháp. Dưới đây chúng tôi sẽ trình bày cách API đồ họa .NET của chúng tôi, Aspose.Drawing for .NET, có thể giúp bạn sử dụng System.Drawing trong Linux. Sử dụng Aspose.Drawing, bạn có thể loại bỏ các thư viện đồ họa bằng mã gốc và để hình ảnh của bạn trông giống nhau trên tất cả các nền tảng.

.NET Graphics API - Dễ cài đặt

Để cài đặt Aspose.Drawing trên máy Linux mục tiêu, bạn chỉ cần cài đặt .NET Core. Đặt Aspose.Drawing.dll vào thư mục dự án của bạn và chạy chương trình. Đó là tất cả. Bây giờ bạn có thể sử dụng các lớp trong không gian tên System.Drawing giống như cách bạn làm với các ứng dụng .NET Framework trên Windows.

Để tải các tệp nhị phân Aspose.Drawing, vui lòng tải xuống phiên bản mới nhất từ trang web chính thức. Ngoài ra, bạn có thể đưa API trực tiếp vào dự án của mình bằng cách chạy lệnh sau.

dotnet add package Aspose.Drawing

Không có thành phần bổ sung được yêu cầu. Aspose.Drawing tự thực hiện tất cả các bản vẽ mà không cần tham khảo bất kỳ thư viện gốc nào. Bạn sẽ không bao giờ nhận được những tin nhắn như:

Unable to load DLL 'libgdiplus': The specified module could not be found.

Và bạn không cần phải quan tâm đến phiên bản của hệ thống đồ họa được cài đặt trên nền tảng của mình.

Không có sự cố nền tảng không thể đoán trước

Với System.Drawing.Common, bạn có thể gặp các lỗi không thể đoán trước trên Linux khi chạy mã đã được chạy thành công trên Windows:

WARNING *: Path conversion requested 34759680 bytes (2480 x 3504). Maximum size is 8388608 bytes.
ERROR:region.c:1155:GdipCombineRegionPath: assertion failed: (region->bitmap)

Aspose.Drawing không phụ thuộc vào libgdiplus, vì vậy bạn sẽ không gặp phải các sự cố như vậy. Chúng tôi có một công cụ vẽ được quản lý hoàn toàn, điều đó có nghĩa là chúng tôi không phụ thuộc vào các thư viện đồ họa gốc. Bạn sẽ không còn gặp phải lỗi nền tảng khó hiểu và hành vi không thể đoán trước của chương trình.

Kết quả hiển thị giống hệt nhau

Một lợi ích khác của việc sử dụng Aspose.Drawing là kết quả hiển thị giống hệt nhau trên tất cả các nền tảng được hỗ trợ. Nếu bạn sử dụng System.Drawing.Common trong .NET Core, kết quả hiển thị của bạn có thể trông khác trên Windows và Linux, hãy xem ví dụ bên dưới.

System.Drawing trên Linux và Windows

Với Aspose.Drawing, bạn có thể tạo các ứng dụng đồ họa đa nền tảng cho Windows, Linux hoặc Android và bạn sẽ luôn nhận được kết quả hiển thị giống nhau trên mỗi nền tảng. Điều này đạt được nhờ việc tạo ra một công cụ kết xuất 2D độc lập với nền tảng thay vì dựa vào các thư viện đồ họa của bên thứ ba.

Ngoài các nguyên mẫu đồ họa, kết xuất phông chữ giống nhau trên tất cả các nền tảng. Và mặc dù phông chữ hệ thống trên Linux khác với Windows, bạn có thể sử dụng PrivateFontCollection để tải bộ phông chữ của riêng mình. Một cách khác là cài đặt một gói phông chữ Microsoft vào hệ thống Linux và gọi các chức năng kết xuất văn bản như bình thường.

Dùng thử Aspose.Drawing miễn phí

Aspose.Drawing có sẵn trên NuGet. Bạn cũng có thể tải xuống tệp nhị phân hoặc trình cài đặt MSI. Bạn có thể sử dụng thư viện Aspose.Drawing với các hạn chế hoặc yêu cầu giấy phép dùng thử miễn phí.

Vậy tại sao bạn không thử ngay hôm nay?

Sự kết luận

Trong bài viết này, bạn đã thấy việc sử dụng System.Drawing dễ dàng như thế nào trên tất cả các nền tảng mà không có bất kỳ phụ thuộc nào và nhận được cùng một kết quả. Bạn có thể tìm hiểu thêm về Aspose.Drawing tại trang chính thức. Nếu có bất kỳ câu hỏi nào, vui lòng sử dụng diễn đàn và theo dõi các bài đăng và hướng dẫn trong tương lai.

Xem thêm