Pustaka decoding gambar SAIL tersedia

Di bawah lisensi MIT diterbitkan perpustakaan decoding gambar lintas platform SAIL. SAIL adalah rebranding codec dari penampil gambar yang sudah lama tidak didukung dan ditulis ulang dalam C tupai, tetapi dengan API abstrak tingkat tinggi dan banyak peningkatan. Target audiens: pemirsa gambar, pengembangan game, memuat gambar ke dalam memori untuk tujuan lain. Perpustakaan sedang dalam pengembangan, namun sudah dapat digunakan. Kompatibilitas biner dan kode sumber tidak dijamin pada tahap pengembangan ini.

Возможности:

  • Pustaka sederhana, ringkas, dan cepat yang ditulis dalam C tanpa ketergantungan pihak ketiga (kecuali codec);
  • API yang sederhana, mudah dipahami, dan sekaligus kuat untuk semua kebutuhan;
  • Binding untuk C++;
  • Format gambar didukung oleh codec yang dimuat secara dinamis;
  • Membaca (dan menulis) gambar dari file, memori, atau bahkan sumber data Anda sendiri;
  • Menentukan jenis gambar berdasarkan ekstensi file, atau berdasarkan angka ajaib;
  • Format yang didukung saat ini: png (baca, khusus Windows), JPEG (baca, tulis) PNG (baca, tulis).
    Pekerjaan sedang dilakukan untuk menambahkan format baru. KSquirrel-libs mendukung sekitar 60 format dalam satu atau lain cara, format yang paling populer berada di urutan pertama;

  • Operasi baca selalu dapat menghasilkan piksel dalam format RGB dan RGBA;
  • Beberapa codec dapat menghasilkan piksel dalam daftar format yang lebih besar;
  • Kebanyakan codec juga dapat menampilkan piksel SOURCE. Ini berguna misalnya bagi mereka yang ingin mendapatkan informasi lengkap dari gambar CMYK atau YCCK;
  • Membaca dan menulis profil ICC;
  • Contoh dalam C, Qt, SDL;
  • Platform yang didukung:
    Windows (penginstal), macOS (buatan) dan Linux (Debian).

Apa yang SAIL tidak sediakan:

  • Pengeditan gambar;
  • Fungsi konversi ruang warna selain yang disediakan oleh codec yang mendasarinya (libjpeg, dll.);
  • Fungsi manajemen warna (penggunaan profil ICC, dll.)

Contoh paling sederhana dari decoding di C:

struct berlayar_konteks *konteks;

SAIL_TRY(sail_init(&konteks));

struct berlayar_image *gambar;
karakter yang tidak ditandatangani *image_pixels;

SAIL_TRY(sail_read(jalur,
konteks,
&gambar,
(batal **)&piksel_gambar));

/*
* Di sini proses piksel yang diterima.
* Untuk melakukan ini, gunakan gambar->lebar, gambar->tinggi, gambar->bytes_per_line,
* dan gambar->pixel_format.
*/

/* Membersihkan */
gratis(piksel_gambar);
layar_penghancuran_gambar(gambar);

Deskripsi singkat tentang level API:

  • Pemula: "Saya hanya ingin mendownload JPEG ini"
  • Lanjutan: "Saya ingin memuat GIF animasi ini dari memori"
  • Penyelam laut dalam: “Saya ingin memuat GIF animasi ini dari memori dan memiliki kontrol penuh atas codec dan keluaran piksel yang saya pilih.”
  • Penyelam Teknis: “Saya ingin semuanya di atas, dan sumber data saya sendiri”

Pesaing langsung dari bidang yang sama:

  • Gambar Gratis
  • Iblis
  • SDL_Gambar
  • WIC
  • imlib2
  • Tingkatkan.GIL
  • gdk-pixbuf

Perbedaan dari perpustakaan lain:

  • API Manusia dengan entitas yang diharapkan - gambar, palet, dll.
  • Kebanyakan codec dapat menghasilkan lebih dari sekadar piksel RGB/RGBA.
  • Kebanyakan codec dapat menghasilkan piksel asli tanpa konversi ke RGB.
  • Anda dapat menulis codec dalam bahasa apa pun, dan juga menambah/menghapusnya tanpa mengkompilasi ulang keseluruhan proyek.
  • Pertahankan informasi tentang gambar asli.
  • “Probing” adalah proses memperoleh informasi tentang suatu gambar tanpa mendekode data piksel.
  • Ukuran dan kecepatan.

Sumber: opennet.ru

Tambah komentar