System.Drawing ในลินุกซ์

หากคุณเคยต้องเรียกใช้แอปพลิเคชัน .NET Core บน Linux คุณอาจสังเกตเห็นว่าหนึ่งในปัญหาหลักคือการไม่มีแอสเซมบลีของ System.Drawing ในแพ็คเกจ .NET Core มาตรฐาน แม้ว่า Microsoft จะแนะนำให้ใช้ System.Drawing.Common นั่นไม่ใช่วิธีแก้ปัญหาขั้นสุดท้าย คุณต้องเรียกใช้ ‘sudo’ บนเครื่องผู้ใช้แต่ละเครื่องเพื่อติดตั้งไลบรารี libgdiplus และหลังจากนั้น ผลการเรนเดอร์ของคุณจะแตกต่างจากที่คุณมีบนเครื่อง Windows เล็กน้อย เพื่อรับมือกับปัญหานี้ บทความนี้กล่าวถึงวิธีใช้ System.Drawing ใน Linux โดยไม่ต้องใช้ไลบรารี่ libgdiplus

ใช้ System.Drawing บน Linux

โชคดีที่ตอนนี้เรามีทางออกแล้ว ด้านล่างนี้ เราจะสาธิตว่า .NET Graphics API, Aspose.Drawing for .NET สามารถช่วยคุณใช้ System.Drawing ใน Linux ได้อย่างไร เมื่อใช้ Aspose.Drawing คุณสามารถกำจัดไลบรารีกราฟิกด้วยโค้ดแบบเนทีฟ และทำให้รูปภาพของคุณมีลักษณะเหมือนกันในทุกแพลตฟอร์ม

.NET Graphics API - ติดตั้งง่าย

สำหรับการติดตั้ง Aspose.Drawing บนเครื่อง Linux เป้าหมาย คุณเพียงแค่ต้องติดตั้ง .NET Core ใส่ Aspose.Drawing.dll ในโฟลเดอร์โครงการของคุณและเรียกใช้โปรแกรม นั่นคือทั้งหมด ตอนนี้คุณสามารถใช้คลาสในเนมสเปซ System.Drawing ได้เหมือนกับที่คุณทำจากแอปพลิเคชัน .NET Framework บน Windows

หากต้องการรับ Aspose.Drawing ไบนารี โปรด ดาวน์โหลด เวอร์ชันล่าสุดจากเว็บไซต์ทางการ หรือคุณสามารถรวม API โดยตรงในโครงการของคุณโดยเรียกใช้คำสั่งต่อไปนี้

dotnet add package Aspose.Drawing

ไม่จำเป็นต้องมีส่วนประกอบเพิ่มเติม Aspose.Drawing ทำการวาดเองทั้งหมดโดยไม่อ้างอิงไลบรารีเนทีฟใดๆ คุณจะไม่ได้รับข้อความเช่น:

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

และคุณไม่ต้องสนใจเวอร์ชันของระบบกราฟิกที่ติดตั้งบนแพลตฟอร์มของคุณ

ไม่มีปัญหาเกี่ยวกับแพลตฟอร์มที่คาดเดาไม่ได้

ด้วย System.Drawing.Common คุณจะได้รับข้อผิดพลาดที่คาดเดาไม่ได้บน Linux เมื่อรันโค้ดที่รันสำเร็จบน 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 ไม่ได้ขึ้นอยู่กับ libgdiplus ดังนั้นคุณจะไม่มีปัญหาดังกล่าว เรามีเอ็นจิ้นการวาดที่มีการจัดการเต็มรูปแบบ ซึ่งหมายความว่าเราไม่มีการพึ่งพาไลบรารีกราฟิกแบบเนทีฟ คุณจะไม่พบข้อผิดพลาดของแพลตฟอร์มที่เข้าใจยากและพฤติกรรมที่คาดเดาไม่ได้ของโปรแกรมอีกต่อไป

ผลลัพธ์การแสดงผลที่เหมือนกัน

ข้อดีอีกประการของการใช้ Aspose.Drawing คือผลการเรนเดอร์ที่เหมือนกันบนแพลตฟอร์มที่รองรับทั้งหมด หากคุณใช้ System.Drawing.Common ใน .NET Core ผลการเรนเดอร์ของคุณอาจดูแตกต่างออกไปบน Windows และ Linux ดูตัวอย่างด้านล่าง

System.Drawing บน Linux และ Windows

ด้วย Aspose.Drawing คุณสามารถสร้างแอปพลิเคชันกราฟิกข้ามแพลตฟอร์มสำหรับ Windows, Linux หรือ Android และคุณจะได้รับผลการเรนเดอร์ที่เหมือนกันเสมอในแต่ละแพลตฟอร์ม สิ่งนี้ทำได้โดยการสร้างเอ็นจิ้นการเรนเดอร์ 2D ที่ไม่ขึ้นกับแพลตฟอร์มแทนที่จะใช้ไลบรารีกราฟิกของบุคคลที่สาม

นอกเหนือจากกราฟิกดั้งเดิมแล้ว การแสดงฟอนต์ก็เหมือนกันในทุกแพลตฟอร์ม และแม้ว่าแบบอักษรของระบบบน Linux จะแตกต่างจาก Windows คุณสามารถใช้ PrivateFontCollection เพื่อโหลดชุดแบบอักษรของคุณเองได้ อีกวิธีหนึ่งคือการติดตั้งชุดฟอนต์ Microsoft ลงในระบบ Linux และเรียกใช้ฟังก์ชันการแสดงข้อความตามปกติ

ลอง Aspose วาดรูปฟรี

Aspose.Drawing มีอยู่ใน NuGet คุณยังสามารถ ดาวน์โหลด ไบนารีหรือตัวติดตั้ง MSI คุณสามารถใช้ไลบรารี Aspose.Drawing โดยมีข้อจำกัดหรือขอ ใบอนุญาตทดลองใช้ฟรี

แล้วทำไมไม่ลองวันนี้ล่ะ?

บทสรุป

ในบทความนี้ คุณได้เห็นแล้วว่าการใช้ System.Drawing นั้นง่ายเพียงใดบนทุกแพลตฟอร์มโดยไม่ต้องขึ้นต่อกันและได้ผลลัพธ์เดียวกัน คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.Drawing ได้ที่ทางการ หน้า หากมีคำถามใดๆ โปรดใช้ ฟอรัม และคอยติดตามโพสต์และคำแนะนำในอนาคต

ดูสิ่งนี้ด้วย