ΠΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· Π½Π° MIT
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ:
- ΠΡΠΎΡΡΠ°, ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° ΠΈ Π±ΡΡΠ·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° C Π±Π΅Π· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ (Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π΅ΡΠΈ);
- ΠΡΠΎΡΡ, ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠΎΡΠ΅Π½ API Π·Π° Π²ΡΠΈΡΠΊΠΈ Π½ΡΠΆΠ΄ΠΈ;
- ΠΠ±Π²ΡΡΠ·Π²Π°Π½ΠΈΡ Π·Π° C++;
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΈ ΠΊΠΎΠ΄Π΅ΡΠΈ;
- Π§Π΅ΡΠ΅ΡΠ΅ (ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°ΠΉΡΠ΅) ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ°ΠΉΠ», ΠΏΠ°ΠΌΠ΅Ρ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈ;
- ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΈΠΏΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΠ΅Π· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΡΠ΅Π·
ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎ ΡΠΈΡΠ»ΠΎ ; - Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ:
png (ΡΠ΅ΡΠ΅Π½Π΅, ΡΠ°ΠΌΠΎ Π·Π° Windows), JPEG (ΡΠ΅ΡΠ΅Π½Π΅, Π·Π°ΠΏΠΈΡ) PNG (ΡΠ΅ΡΠ΅Π½Π΅, Π·Π°ΠΏΠΈΡ).
Π Π°Π±ΠΎΡΠΈ ΡΠ΅ ΠΏΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ. KSquirrel-libs ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 60 ΡΠΎΡΠΌΠ°ΡΠ° ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΡΠΎ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈ ΡΠ° ΠΏΡΡΠ²ΠΈΡΠ΅ Π² ΡΠ΅Π΄ΠΈΡΠ°ΡΠ°; - ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ RGB ΠΈ RGBA;
- ΠΡΠΊΠΎΠΈ ΠΊΠΎΠ΄Π΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π² ΠΎΡΠ΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠΈ;
- ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ΄Π΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ ΡΡΡΠΎ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ SOURCE ΠΏΠΈΠΊΡΠ΅Π»ΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠ»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ CMYK ΠΈΠ»ΠΈ YCCK ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ;
- Π§Π΅ΡΠ΅Π½Π΅ ΠΈ ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ICC ΠΏΡΠΎΡΠΈΠ»ΠΈ;
- ΠΡΠΈΠΌΠ΅ΡΠΈ Π² C, Qt, SDL;
- ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ:
Windows (ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΎΡ), macOS (Π²Π°ΡΡ) ΠΈ Linux (Debian).
ΠΠ°ΠΊΠ²ΠΎ SAIL Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ:
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ;
- Π€ΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ²Π΅ΡΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ΄Π΅ΡΠΈ (libjpeg ΠΈ Π΄Ρ.);
- Π€ΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ²Π΅ΡΠΎΠ²Π΅ΡΠ΅ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ICC ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΈ Π΄Ρ.)
ΠΠ°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π² C:
struct sail_context *ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ;
SAIL_TRY(sail_init(&ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ));
struct sail_image *ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅;
unsigned char *image_pixels;
SAIL_TRY(sail_read(ΠΏΡΡ,
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ,
&ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅,
(void **)&image_pixels));
/*
* Π’ΡΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ.
* ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ image->width, image->height, image->bytes_per_line,
* ΠΈ image->pixel_format.
*/
/* ΠΠΎΡΠΈΡΡΠΈ */
Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ (ΠΏΠΈΠΊΡΠ΅Π»ΠΈ_ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅);
sail_destroy_image(ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅);
ΠΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° API Π½ΠΈΠ²Π°ΡΠ°:
- ΠΠΎΠ²Π°ΠΊ: βΠΡΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»Ρ ΡΠΎΠ·ΠΈ JPEGβ
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΎ: βΠΡΠΊΠ°ΠΌ Π΄Π° Π·Π°ΡΠ΅Π΄Ρ ΡΠΎΠ·ΠΈ Π°Π½ΠΈΠΌΠΈΡΠ°Π½ GIF ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°β
- Deep sea diver: βΠΡΠΊΠ°ΠΌ Π΄Π° Π·Π°ΡΠ΅Π΄Ρ ΡΠΎΠ·ΠΈ Π°Π½ΠΈΠΌΠΈΡΠ°Π½ GIF ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π΄Π° ΠΈΠΌΠ°ΠΌ ΠΏΡΠ»Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ ΠΊΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π±Π΅ΡΠ°.β
- Technical Diver: βΠΡΠΊΠ°ΠΌ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈβ
ΠΡΠ΅ΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈ ΠΎΡ ΡΡΡΠ°ΡΠ° ΠΎΠ±Π»Π°ΡΡ:
- FreeImage
- ΠΡΠ²ΠΎΠ»
- SDL_Image
- WIC
- imlib2
- Boost.GIL
- gdk-pixbuf
Π Π°Π·Π»ΠΈΠΊΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
- Human API Ρ ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠ°Π»Π΅ΡΠΈ ΠΈ Π΄Ρ.
- ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ΄Π΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·Π²Π΅Π΄Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ RGB/RGBA ΠΏΠΈΠΊΡΠ΅Π»ΠΈ.
- ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ΄Π΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ Π±Π΅Π· ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² RGB.
- ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π΅ΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΅Π·ΠΈΠΊ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅/ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°ΡΠ΅ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ.
- ΠΠ°ΠΏΠ°Π·Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
- βΠ‘ΠΎΠ½Π΄ΠΈΡΠ°Π½Π΅β Π΅ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
- Π Π°Π·ΠΌΠ΅Ρ ΠΈ ΡΠΊΠΎΡΠΎΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru