SAIL圖像解碼庫可用

根據麻省理工學院許可 發表 跨平台圖像解碼庫SAIL。 SAIL 是對編解碼器的品牌重塑,源自於長期不受支援的影像檢視器,以 C 重寫 松鼠,但具有高級抽象 API 和大量改進。 目標受眾:圖像檢視器、遊戲開發、將圖像載入到記憶體中以用於其他目的。 該庫正在開發中,但已經可用。 在這個開發階段,無法保證二進位和原始碼的兼容性。

產品特點:

  • 一個用 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

添加評論