ภายใต้ใบอนุญาต MIT
คุณสมบัติ:
- ไลบรารี่ที่เรียบง่าย กะทัดรัด และรวดเร็ว เขียนด้วยภาษา C โดยไม่มีการพึ่งพาบุคคลที่สาม (ยกเว้นตัวแปลงสัญญาณ)
- API ที่เรียบง่าย เข้าใจได้ และในขณะเดียวกันก็ทรงพลังสำหรับทุกความต้องการ
- การผูกสำหรับ C ++;
- รูปแบบภาพได้รับการสนับสนุนโดยตัวแปลงสัญญาณที่โหลดแบบไดนามิก
- อ่าน (และเขียน) รูปภาพจากไฟล์ หน่วยความจำ หรือแม้แต่แหล่งข้อมูลของคุณเอง
- การกำหนดประเภทรูปภาพตามนามสกุลไฟล์หรือตาม
หมายเลขมหัศจรรย์ ; - รูปแบบที่รองรับในปัจจุบัน:
เอ.พี.เอ็น (อ่าน, Windows เท่านั้น), JPEG (อ่าน, เขียน) PNG (อ่าน, เขียน)
งานกำลังดำเนินการเพื่อเพิ่มรูปแบบใหม่ KSquirrel-libs รองรับประมาณ 60 รูปแบบไม่ทางใดก็ทางหนึ่ง รูปแบบที่ได้รับความนิยมสูงสุดจะอยู่อันดับแรก - การดำเนินการอ่านสามารถส่งออกพิกเซลในรูปแบบ RGB และ RGBA ได้ตลอดเวลา
- ตัวแปลงสัญญาณบางตัวสามารถส่งออกพิกเซลในรายการรูปแบบที่ใหญ่ขึ้นได้
- ตัวแปลงสัญญาณส่วนใหญ่สามารถส่งออกพิกเซล SOURCE ได้ สิ่งนี้มีประโยชน์สำหรับผู้ที่ต้องการรับข้อมูลทั้งหมดจากรูปภาพ CMYK หรือ YCCK
- การอ่านและการเขียนโปรไฟล์ ICC
- ตัวอย่างในภาษา C, Qt, SDL;
- แพลตฟอร์มที่รองรับ:
Windows (ตัวติดตั้ง), macOS (ชง) และ Linux (Debian)
สิ่งที่ SAIL ไม่มีให้:
- การแก้ไขภาพ
- ฟังก์ชันการแปลงพื้นที่สีนอกเหนือจากที่มีให้โดยตัวแปลงสัญญาณพื้นฐาน (libjpeg ฯลฯ )
- ฟังก์ชันการจัดการสี (การใช้โปรไฟล์ ICC ฯลฯ)
ตัวอย่างการถอดรหัสที่ง่ายที่สุดใน C:
struct sail_context *บริบท;
SAIL_TRY(sail_init(&บริบท));
struct sail_image * รูปภาพ;
ถ่านที่ไม่ได้ลงนาม *image_pixels;
SAIL_TRY(sail_read(เส้นทาง,
บริบท,
&ภาพ,
(เป็นโมฆะ **)&image_pixels));
/*
* ที่นี่ประมวลผลพิกเซลที่ได้รับ
* หากต้องการทำสิ่งนี้ ให้ใช้รูปภาพ->ความกว้าง, รูปภาพ->ความสูง, รูปภาพ->bytes_per_line,
* และรูปภาพ -> pixel_format
*/
/* ทำความสะอาด */
ฟรี(image_pixels);
sail_destroy_image (ภาพ);
คำอธิบายโดยย่อของระดับ API:
- มือใหม่: "ฉันแค่อยากดาวน์โหลด JPEG นี้"
- ขั้นสูง: "ฉันต้องการโหลด GIF แบบเคลื่อนไหวนี้จากหน่วยความจำ"
- นักดำน้ำใต้ทะเลลึก: “ฉันต้องการโหลด GIF แบบเคลื่อนไหวนี้จากหน่วยความจำ และควบคุมโคเดกและเอาต์พุตพิกเซลที่ฉันเลือกได้อย่างเต็มที่”
- นักดำน้ำด้านเทคนิค: “ฉันต้องการทุกสิ่งที่กล่าวมาข้างต้น และแหล่งข้อมูลของตัวเอง”
คู่แข่งโดยตรงจากพื้นที่เดียวกัน:
- ภาพฟรี
- เดวิล
- SDL_รูปภาพ
- WIC
- imlib2
- บูสท์.กิล
- gdk-pixbuf
ความแตกต่างจากห้องสมุดอื่น:
- API ของมนุษย์พร้อมเอนทิตีที่คาดหวัง เช่น รูปภาพ จานสี ฯลฯ
- โคเดกส่วนใหญ่สามารถส่งออกได้มากกว่าพิกเซล RGB/RGBA
- Большинство кодеков умеют отдавать исходные пиксели без преобразований в RGB.
- คุณสามารถเขียนโคเดกในภาษาใดก็ได้ และยังเพิ่ม/ลบโคเดกเหล่านั้นได้โดยไม่ต้องคอมไพล์ใหม่ทั้งโปรเจ็กต์
- รักษาข้อมูลเกี่ยวกับภาพต้นฉบับ
- “การตรวจสอบ” คือกระบวนการรับข้อมูลเกี่ยวกับรูปภาพโดยไม่ต้องถอดรหัสข้อมูลพิกเซล
- ขนาดและความเร็ว.
ที่มา: opennet.ru