Налична Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° изобраТСния SAIL

Под Π»ΠΈΡ†Π΅Π½Π· Π½Π° MIT ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° изобраТСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ SAIL. SAIL Π΅ Ρ€Π΅Π±Ρ€Π°Π½Π΄ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π΅Ρ†ΠΈ ΠΎΡ‚ ΠΎΡ‚Π΄Π°Π²Π½Π° Π½Π΅ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° изобраТСния, прСнаписана Π½Π° C KSΠΊΠ°Ρ‚Π΅Ρ€ΠΈΡ†Π°, Π½ΠΎ с абстрактСн API Π½Π° високо Π½ΠΈΠ²ΠΎ ΠΈ мноТСство подобрСния. Π¦Π΅Π»Π΅Π²Π° аудитория: Π·Ρ€ΠΈΡ‚Π΅Π»ΠΈ Π½Π° изобраТСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ³Ρ€ΠΈ, Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ†Π΅Π»ΠΈ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π΅ Π² процСс Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π½ΠΎ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚Ρ‚Π° Π½Π° бинарния ΠΈ изходния ΠΊΠΎΠ΄ Π½Π΅ Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ Π΅Ρ‚Π°ΠΏ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

Π₯арактСристики:

  • ΠŸΡ€ΠΎΡΡ‚Π°, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° ΠΈ Π±ΡŠΡ€Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, написана Π½Π° 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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€