Thư viện giải mã hình ảnh SAIL có sẵn

Theo giấy phép MIT xuất bản thư viện giải mã hình ảnh đa nền tảng SAIL. SAIL là việc đổi tên thương hiệu của codec từ trình xem hình ảnh không được hỗ trợ từ lâu được viết lại bằng C KS sóc, nhưng với API trừu tượng cấp cao và nhiều cải tiến. Đối tượng: người xem hình ảnh, phát triển game, tải hình ảnh vào bộ nhớ cho các mục đích khác. Thư viện đang được phát triển nhưng đã có thể sử dụng được. Khả năng tương thích mã nhị phân và mã nguồn không được đảm bảo ở giai đoạn phát triển này.

Các tính năng:

  • Thư viện đơn giản, nhỏ gọn và nhanh chóng được viết bằng C mà không phụ thuộc vào bên thứ ba (ngoại trừ codec);
  • API đơn giản, dễ hiểu và đồng thời mạnh mẽ cho mọi nhu cầu;
  • Các ràng buộc cho C++;
  • Các định dạng hình ảnh được hỗ trợ bởi codec được tải động;
  • Đọc (và ghi) hình ảnh từ tệp, bộ nhớ hoặc thậm chí nguồn dữ liệu của riêng bạn;
  • Xác định loại hình ảnh theo phần mở rộng của tệp hoặc bằng con số kỳ diệu;
  • Các định dạng hiện được hỗ trợ: png (đọc, chỉ dành cho Windows), JPEG (đọc, ghi) PNG (đọc, ghi).
    Công việc đang được tiến hành để thêm các định dạng mới. KSquirrel-libs hỗ trợ khoảng 60 định dạng theo cách này hay cách khác, các định dạng phổ biến nhất là định dạng đầu tiên;

  • Hoạt động đọc luôn có thể xuất ra các pixel ở định dạng RGB và RGBA;
  • Một số codec có thể xuất pixel ở danh sách định dạng thậm chí còn lớn hơn;
  • Hầu hết các codec cũng có thể xuất pixel SOURCE. Điều này rất hữu ích, ví dụ như đối với những ai muốn lấy thông tin đầy đủ từ hình ảnh CMYK hoặc YCCK;
  • Đọc và viết hồ sơ ICC;
  • Ví dụ trong C, Qt, SDL;
  • Nền tảng được hỗ trợ:
    Windows (trình cài đặt), macOS (brew) và Linux (Debian).

SAIL không cung cấp những gì:

  • Chỉnh sửa hình ảnh;
  • Các chức năng chuyển đổi không gian màu khác với các chức năng được cung cấp bởi codec cơ bản (libjpeg, v.v.);
  • Chức năng quản lý màu (sử dụng cấu hình ICC, v.v.)

Ví dụ đơn giản nhất về giải mã trong C:

struct Sail_context *bối cảnh;

SAIL_TRY(sail_init(&context));

struct Sail_image *hình ảnh;
ký tự không dấu *image_pixels;

SAIL_TRY(sail_read(đường dẫn,
bối cảnh,
&hình ảnh,
(void **)&image_pixels));

/*
* Ở đây xử lý các pixel nhận được.
* Để thực hiện việc này, hãy sử dụng hình ảnh->chiều rộng, hình ảnh->chiều cao, hình ảnh->byte_per_line,
* và hình ảnh->pixel_format.
*/

/* Dọn dẹp */
miễn phí(image_pixel);
Sail_destroy_image(hình ảnh);

Mô tả ngắn gọn về các cấp độ API:

  • Người mới: "Tôi chỉ muốn tải xuống JPEG này"
  • Nâng cao: "Tôi muốn tải ảnh GIF động này từ bộ nhớ"
  • Thợ lặn biển sâu: “Tôi muốn tải ảnh GIF động này từ bộ nhớ và có toàn quyền kiểm soát codec cũng như đầu ra pixel mà tôi chọn.”
  • Thợ lặn kỹ thuật: “Tôi muốn mọi thứ ở trên và nguồn dữ liệu của riêng tôi”

Đối thủ cạnh tranh trực tiếp từ cùng khu vực:

  • Hình ảnh miễn phí
  • Ác quỷ
  • SDL_Hình ảnh
  • WIC
  • imlib2
  • Tăng cường.GIL
  • gdk-pixbuf

Sự khác biệt so với các thư viện khác:

  • API con người với các thực thể dự kiến ​​- hình ảnh, bảng màu, v.v.
  • Hầu hết các codec có thể xuất ra nhiều hơn các pixel RGB/RGBA.
  • Hầu hết các codec có thể xuất ra các pixel gốc mà không cần chuyển đổi sang RGB.
  • Bạn có thể viết codec bằng bất kỳ ngôn ngữ nào và cũng có thể thêm/xóa chúng mà không cần biên dịch lại toàn bộ dự án.
  • Bảo toàn thông tin về ảnh gốc.
  • “Thăm dò” là quá trình thu thập thông tin về hình ảnh mà không cần giải mã dữ liệu pixel.
  • Kích thước và tốc độ.

Nguồn: opennet.ru

Thêm một lời nhận xét