ΠΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- ΠΡΠΎΡΡΠ°Ρ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π°Ρ ΠΈ Π±ΡΡΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° Π‘ Π±Π΅Π· ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ²);
- ΠΡΠΎΡΡΠΎΠΉ, ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈ Π² ΡΠΎΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΡΠ½ΡΠΉ API Π΄Π»Ρ Π²ΡΠ΅Ρ Π½ΡΠΆΠ΄;
- ΠΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ ΠΊ C++;
- Π€ΠΎΡΠΌΠ°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΌΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠ°ΠΌΠΈ;
- Π§ΡΠ΅Π½ΠΈΠ΅ (ΠΈ Π·Π°ΠΏΠΈΡΡ) ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ ;
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°, ΠΈΠ»ΠΈ ΠΏΠΎ
ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΈΡΠ»Ρ ; - ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΡΠΌΠ°ΡΡ:
APNG (ΡΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Windows), JPEG (ΡΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΡ) PNG (ΡΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΠΈΡΡ).
Π Π°Π±ΠΎΡΠ° ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π²Π΅Π΄ΡΡΡΡ. KSquirrel-libs ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π» ΠΎΠΊΠΎΠ»ΠΎ 60 ΡΠΎΡΠΌΠ°ΡΠΎΠ², Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΡΡΠΎΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ; - ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠ³ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ RGB ΠΈ RGBA;
- ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π² Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ²;
- ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΡΠΌΠ΅ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ (SOURCE) ΠΏΠΈΠΊΡΠ΅Π»ΠΈ. ΠΡΠΎ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΌ, ΠΊΡΠΎ Π·Π°Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· CMYK- ΠΈΠ»ΠΈ YCCK-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ;
- Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ ICC ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ;
- ΠΡΠΈΠΌΠ΅ΡΡ Π½Π° C, Qt, SDL;
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ:
Windows (installer), macOS (brew) ΠΈ Linux (Debian).
Π§ΡΠΎ SAIL Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ:
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ;
- Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΊΡΠΎΠΌΠ΅ ΡΠ΅Ρ , ΡΡΠΎ Π΄Π°ΡΡ Π½ΠΈΠ·Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ (libjpeg ΠΈ Ρ.Π΄.);
- Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠΌ (ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ICC ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΈ Ρ.Π΄.)
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° C:
struct sail_context *context;
SAIL_TRY(sail_init(&context));
struct sail_image *image;
unsigned char *image_pixels;
SAIL_TRY(sail_read(path,
context,
&image,
(void **)&image_pixels));
/*
* ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ.
* ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ image->width, image->height, image->bytes_per_line,
* ΠΈ image->pixel_format.
*/
/* ΠΡΠΈΡΡΠΊΠ° */
free(image_pixels);
sail_destroy_image(image);
ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Π΅ΠΉ API:
- ΠΠΎΠ²ΠΈΡΠΎΠΊ: «Π― ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΠΎΡ JPEG»
- ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ: «Π― Ρ ΠΎΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΠΎΡ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GIF ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ»
- ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ²ΠΎΠ΄Π½ΡΠΉ Π΄Π°ΠΉΠ²Π΅Ρ: «Π― Ρ ΠΎΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΠΎΡ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GIF ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠ΄Π΅ΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΠΎΡΠ΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ»
- Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π°ΠΉΠ²Π΅Ρ: «Π― Ρ ΠΎΡΡ Π²ΡΡ ΡΡΠΎ Π²ΡΡΠ΅, ΠΈ ΠΌΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ »
ΠΡΡΠΌΡΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΡ ΠΈΠ· ΡΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ:
- FreeImage
- DevIL
- SDL_Image
- WIC
- imlib2
- Boost.GIL
- gdk-pixbuf
ΠΡΠ»ΠΈΡΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ:
- Π§Π΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΈΠΉ API Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌΠΈ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ — ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠ°Π»ΠΈΡΡΠ°ΠΌΠΈ ΠΈ Ρ.Π΄.
- ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΡΠΌΠ΅ΡΡ ΠΎΡΠ΄Π°Π²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ RGB/RGBA ΠΏΠΈΠΊΡΠ΅Π»ΠΈ.
- ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΡΠΌΠ΅ΡΡ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π±Π΅Π· ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π² RGB.
- ΠΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ/ΡΠ΄Π°Π»ΡΡΡ ΠΈΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
- «ΠΡΠΎΡΡΠΏΡΠ²Π°Π½ΠΈΠ΅» (probing) — ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π±Π΅Π· Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ .
- Π Π°Π·ΠΌΠ΅Ρ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru