根據麻省理工學院許可
產品特點:
- 一個用 C 編寫的簡單、緊湊且快速的函式庫,無需第三方依賴項(編解碼器除外);
- 簡單、易懂且強大的 API 可以滿足所有需求;
- C++ 的綁定;
- 動態載入的編解碼器支援圖像格式;
- 從檔案、記憶體甚至您自己的資料來源讀取(和寫入)影像;
- 透過檔案副檔名確定影像類型,或透過
幻數 ; - 目前支援的格式:
亞太地區 (讀取,僅限 Windows)、JPEG(讀取、寫入) PNG(讀取、寫入)。
新增格式的工作正在進行中。 KSquirrel-libs 以某種方式支援大約 60 種格式,最受歡迎的格式排在第一位; - 讀取操作始終可以輸出RGB和RGBA格式的像素;
- 有些編解碼器可以以更大的格式輸出像素;
- 大多數編解碼器還可以輸出來源像素。 例如,對於想要從 CMYK 或 YCCK 影像獲取完整資訊的人來說,這很有用;
- 讀寫 ICC 配置檔;
- C、Qt、SDL 中的範例;
- 支持的平台:
Windows(安裝程式)、macOS(brew)和 Linux(Debian)。
SAIL 不提供的內容:
- 圖像編輯;
- 除底層編解碼器提供的色彩空間轉換函數(libjpeg等)以外的色彩空間轉換函數;
- 色彩管理功能(ICC設定檔的使用等)
最簡單的C解碼範例:
結構 sail_context *context;
SAIL_TRY(sail_init(&context));
結構 sail_image *圖像;
無符號字元*image_pixels;
SAIL_TRY(sail_read(路徑,
上下文
&圖像,
(void **)&image_pixels));
/*
* 這裡處理接收到的像素。
* 為此,請使用 image->width、image->height、image->bytes_per_line、
* 和影像->像素格式。
*/
/* 清理 */
免費(影像像素);
sail_destroy_image(影像);
API層級簡要說明:
- 新手:“我只想下載這個 JPEG”
- 高級:“我想從內存中加載這個動畫 GIF”
- 深海潛水員:“我想從內存中加載這個動畫 GIF,並完全控制我選擇的編解碼器和像素輸出。”
- 技術潛水員:“我想要上面的一切,還有我自己的數據來源”
來自同一領域的直接競爭對手:
- 自由影像
- 魔鬼
- SDL_影像
- WIC
- 庫2
- 增強GIL
- gdk-pixbuf
與其他函式庫的區別:
- 具有預期實體的人類 API - 影像、調色板等。
- 大多數編解碼器不僅可以輸出 RGB/RGBA 像素。
- 大多數編解碼器可以輸出原始像素,無需轉換為 RGB。
- 您可以用任何語言編寫編解碼器,也可以新增/刪除它們,而無需重新編譯整個專案。
- 保留有關原始圖像的資訊。
- 「探測」是在不解碼像素資料的情況下獲取影像資訊的過程。
- 大小和速度。
來源: opennet.ru