มีไลบรารีการถอดรหัสรูปภาพ SAIL

ภายใต้ใบอนุญาต MIT เผยแพร่แล้ว ไลบรารีการถอดรหัสรูปภาพข้ามแพลตฟอร์ม SAIL SAIL เป็นการรีแบรนด์โคเดกจากโปรแกรมดูรูปภาพที่ไม่รองรับมายาวนานซึ่งเขียนใหม่ในภาษาซี KSกระรอกแต่ด้วย API เชิงนามธรรมระดับสูงและการปรับปรุงมากมาย กลุ่มเป้าหมาย: ผู้ดูรูปภาพ การพัฒนาเกม การโหลดรูปภาพลงในหน่วยความจำเพื่อวัตถุประสงค์อื่น ห้องสมุดอยู่ระหว่างการพัฒนาแต่สามารถใช้งานได้แล้ว ไม่รับประกันความเข้ากันได้ของไบนารีและซอร์สโค้ดในขั้นตอนการพัฒนานี้

คุณสมบัติ:

  • ไลบรารี่ที่เรียบง่าย กะทัดรัด และรวดเร็ว เขียนด้วยภาษา 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

เพิ่มความคิดเห็น