SAIL ื‘ื™ืœื“ ื“ื™ืงืึธื•ื“ื™ื ื’ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื‘ื ื™ืžืฆื

ืื•ื ื˜ืขืจ MIT ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืืจื•ื™ืก ืงืจื™ื™ึทื–-ืคึผืœืึทื˜ืคืึธืจืžืข ื‘ื™ืœื“ ื“ื™ืงืึธื•ื“ื™ื ื’ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื–ืขื’ืœ. SAIL ืื™ื– ืึท ืจื™ื‘ืจืึทื ื“ื™ื ื’ ืคื•ืŸ ืงืึธื“ืขืงืก ืคึฟื•ืŸ ืึท ืœืึทื ื’-ืึทื ืกืึทืคึผืึธืจื˜ื™ื“ ื‘ื™ืœื“ ืฆื•ืงื•ืงืขืจ ืจื™ืจื™ื™ื˜ ืื™ืŸ C ืงืงื•ื•ื™ืจืจืขืœ, ืึธื‘ืขืจ ืžื™ื˜ ืึท ื”ื•ื™ืš-ืžื“ืจื’ื” ืึทื‘ืกื˜ืจืึทืงื˜ ืึทืคึผื™ ืื•ืŸ ืคื™ืœืข ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ. ืฆื™ืœ ื•ื™ืœืขื: ื‘ื™ืœื“ ื•ื•ื™ื•ืขืจื–, ืฉืคึผื™ืœ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืœืึธื•ื“ื™ื ื’ ื‘ื™ืœื“ืขืจ ืื™ืŸ ื–ื›ึผืจื•ืŸ ืคึฟืึทืจ ืื ื“ืขืจืข ืฆื•ื•ืขืงืŸ. ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ืื•ื ื˜ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืึธื‘ืขืจ ืื™ื– ืฉื•ื™ืŸ ื ื™ืฆืœืขืš. ื‘ื™ื™ื ืขืจื™ ืื•ืŸ ืžืงื•ืจ ืงืึธื“ ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืื™ื– ื ื™ืฉื˜ ื’ืขืจืึทื ื˜ื™ื“ ืื™ืŸ ื“ืขื ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’.

ืคึฟืขื™ึดืงื™ื™ื˜ืŸ:

  • ื ืคึผืฉื•ื˜, ืกืึธืœื™ื“ ืื•ืŸ ืฉื ืขืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ C ืึธืŸ ื“ืจื™ื˜-ืคึผืึทืจื˜ื™ื™ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– (ืึทื—ื•ืฅ ืงืึธื“ืขืงืก);
  • ืคึผืฉื•ื˜, ืคืึทืจืฉื˜ื™ื™ื™ืง ืื•ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ืฉื˜ืึทืจืง API ืคึฟืึทืจ ืึทืœืข ื‘ืื“ืขืจืคืขื ื™ืฉืŸ;
  • ื‘ื™ื ื“ื™ื ื’ืก ืคึฟืึทืจ C ++;
  • ื‘ื™ืœื“ ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืœืึธื•ื“ื™ื“ ืงืึธื“ืขืงืก;
  • ืœื™ื™ืขื ืขืŸ (ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ) ื‘ื™ืœื“ืขืจ ืคึฟื•ืŸ ืึท ื˜ืขืงืข, ื–ื›ึผืจื•ืŸ ืึธื“ืขืจ ืืคื™ืœื• ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื“ืึทื˜ืŸ ืžืงื•ืจ;
  • ื“ื™ื˜ืขืจืžืึทื ื™ื ื’ ื“ื™ ื‘ื™ืœื“ ื˜ื™ืคึผ ื“ื•ืจืš ื˜ืขืงืข ื’ืขืฉืคึผืจื™ื™ื˜, ืึธื“ืขืจ ื“ื•ืจืš ืžืึทื’ื™ืฉ ื ื•ืžืขืจ;
  • ืื™ืฆื˜ ื’ืขืฉื˜ื™ืฆื˜ ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ: png (ืœื™ื™ืขื ืขืŸ, ื‘ืœื•ื™ื– Windows), JPEG (ืœื™ื™ืขื ืขืŸ, ืฉืจื™ื™ึทื‘ืŸ) PNG (ืœื™ื™ืขื ืขืŸ, ืฉืจื™ื™ึทื‘ืŸ).
    ืึทืจื‘ืขื˜ ืื™ื– ืึทื ื“ืขืจื•ื•ื™ื™ ืฆื• ืœื™ื™ื’ืŸ ื ื™ื™ึทืข ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ. KSquirrel-libs ืฉื˜ื™ืฆื˜ ื•ื•ืขื’ืŸ 60 ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ ืื™ืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืื ื“ืขืจืŸ ื•ื•ืขื’, ื“ื™ ืžืขืจืกื˜ ืคืึธืœืงืก ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ืขืจืฉื˜ืขืจ ืื™ืŸ ืฉื•ืจื”;

  • ืœื™ื™ืขื ืขืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืงืขื ืขืŸ ืฉื˜ืขื ื“ื™ืง ืจืขื–ื•ืœื˜ืึทื˜ ื‘ื™ืœื“ืฆืขืœืŸ ืื™ืŸ RGB ืื•ืŸ RGBA ืคึฟืึธืจืžืึทื˜;
  • ืขื˜ืœืขื›ืข ืงืึธื“ืขืงืก ืงืขื ืขืŸ ืจืขื–ื•ืœื˜ืึทื˜ ื‘ื™ืœื“ืฆืขืœืŸ ืื™ืŸ ืึทืŸ ืืคื™ืœื• ื’ืจืขืกืขืจืข ืจืฉื™ืžื” ืคื•ืŸ ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ;
  • ืจื•ื‘ึฟ ืงืึธื“ืขืงืก ืงืขื ืขืŸ ืื•ื™ืš ืจืขื–ื•ืœื˜ืึทื˜ SOURCE ื‘ื™ืœื“ืฆืขืœืŸ. ื“ืึธืก ืื™ื– ื ื•ืฆื™ืง, ืœืžืฉืœ, ืคึฟืึทืจ ื“ื™ ื•ื•ืืก ื•ื•ื™ืœืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืคื•ืœ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคึฟื•ืŸ CMYK ืึธื“ืขืจ YCCK ื‘ื™ืœื“ืขืจ;
  • ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืฉืจื™ื™ื‘ืŸ ICC ืคึผืจืึธื•ืคื™ื™ืœื–;
  • ื‘ื™ื™ืฉืคื™ืœืŸ ืื™ืŸ C, Qt, SDL;
  • ืฉื˜ื™ืฆื˜ ืคึผืœืึทื˜ืคืึธืจืžืก:
    Windows (ื™ื ืกื˜ืึทืœืœืขืจ), ืžืึทืงืึธืก (ื‘ืจื•) ืื•ืŸ ืœื™ื ื•ืงืก (ื“ืขื‘ื™ืึทืŸ).

ื•ื•ืึธืก SAIL ื˜ื•ื˜ ื ื™ืฉื˜ ืฆื•ืฉื˜ืขืœืŸ:

  • ื‘ื™ืœื“ ืขื“ื™ื˜ื™ื ื’;
  • ืงืึธืœื™ืจ ืคึผืœืึทืฅ ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ืคืึทื ื’ืงืฉืึทื ื– ืื ื“ืขืจืข ื•ื•ื™ ื“ื™ ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ืึทื ื“ืขืจืœื™ื™ื™ื ื’ ืงืึธื“ืขืงืก (ืœื™ื‘ื“ื–ืฉืคึผืขื’, ืืื–"ื• ื•);
  • ืงืึธืœื™ืจ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืคืึทื ื’ืงืฉืึทื ื– (ื ื•ืฆืŸ ืคื•ืŸ ICC ืคึผืจืึธื•ืคื™ื™ืœื–, ืืื–"ื• ื•)

ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื“ื™ืงืึธื•ื“ื™ื ื’ ืื™ืŸ C:

struct sail_context *ืงืึธื ื˜ืขืงืกื˜;

SAIL_TRY(sail_init(&ืงืึธื ื˜ืขืงืกื˜));

struct sail_image * ื‘ื™ืœื“;
ืึทื ืกื™ื™ื ื“ ื˜ืฉืึทืจ * ื‘ื™ืœื“_ืคึผื™ืงืกืขืœืก;

SAIL_TRY(sail_read(ื“ืจืš,
ืงืึธื ื˜ืขืงืกื˜,
&ื‘ื™ืœื“,
(ืคึผืึธืกืœ **) & ื‘ื™ืœื“_ืคึผื™ืงืกืขืœืก));

/*
* ื“ืึธ ืคึผืจืึธืฆืขืก ื“ื™ ื‘ืืงื•ืžืขืŸ ื‘ื™ืœื“ืฆืขืœืŸ.
* ืฆื• ื˜ืึธืŸ ื“ืึธืก, ื ื•ืฆืŸ ื‘ื™ืœื“-> ื‘ืจื™ื™ื˜, ื‘ื™ืœื“-> ื”ื™ื™ืš, ื‘ื™ืœื“-> ื‘ื™ื˜ืขืก_ืคึผืขืจ_ืœื™ื ืข,
* ืื•ืŸ ื‘ื™ืœื“->ืคึผื™ืงืกืขืœ_ืคืึธืจืžืึทื˜.
*/

/* ืงืœื™ื ืึทืคึผ */
ืคืจื™ื™ (ื‘ื™ืœื“_ืคึผื™ืงืกืขืœืก);
sail_destroy_image (ื‘ื™ืœื“);

ืงื•ืจืฅ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ API ืœืขื•ื•ืขืœืก:

  • ื ืขื•ื•ื‘ื™ืข: "ืื™ืš ื ืึธืจ ื•ื•ื™ืœืŸ ืฆื• ืึธืคึผืœืึธื“ื™ืจืŸ ื“ืขื JPEG"
  • ืึทื•ื•ืึทื ืกื™ืจื˜ืข: "ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ืœืึธื“ืŸ ื“ืขื ืึทื ื™ืžืึทื˜ืขื“ GIF ืคึฟื•ืŸ ื–ื›ึผืจื•ืŸ"
  • ื˜ื™ืฃ ื™ื ื“ื™ื™ื•ื•ืขืจ: "ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ืœืึธื“ืŸ ื“ืขื ืึทื ื™ืžืึทื˜ืขื“ GIF ืคึฟื•ืŸ ื–ื›ึผืจื•ืŸ ืื•ืŸ ื”ืึธื‘ืŸ ืคื•ืœ ืงืึธื ื˜ืจืึธืœ ืื™ื‘ืขืจ ื“ื™ ืงืึธื“ืขืงืก ืื•ืŸ ืคึผื™ืงืกืขืœ ืจืขื–ื•ืœื˜ืึทื˜ ื•ื•ืึธืก ืื™ืš ืงืœื™ื™ึทื‘ืŸ."
  • ื˜ืขื›ื ื™ืฉ ื“ื™ื™ื•ื•ืขืจ: "ืื™ืš ื•ื•ื™ืœืŸ ืึทืœืฅ ืื•ื™ื‘ืŸ, ืื•ืŸ ืžื™ื™ืŸ ืื™ื™ื’ืขื ืข ื“ืึทื˜ืŸ ืžืงื•ืจ"

ื“ื™ืจืขืงื˜ ืงืึธืžืคึผืขื˜ื™ื˜ืึธืจืก ืคื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื’ืขื’ื ื˜:

  • FreeImage
  • ื“ืขื•ื•ื™ืœ
  • SDL_Image
  • ื•ื•ื™ืง
  • imlib2
  • ื‘ื•ืกื˜.ื’ื™ืœ
  • gdk-pixbuf

ื“ื™ืคืขืจืึทื ืกื™ื– ืคื•ืŸ ืื ื“ืขืจืข ื‘ื™ื‘ืœื™ืึธื˜ืขืง:

  • ืžืขื ื˜ืฉ ืึทืคึผื™ ืžื™ื˜ ื“ืขืจื•ื•ืึทืจื˜ ืขื ื˜ื™ื˜ื™ื– - ื‘ื™ืœื“ืขืจ, ืคึผืึทืœืขื˜ื˜ืขืก, ืขื˜ืง.
  • ืจื•ื‘ึฟ ืงืึธื“ืขืงืก ืงืขื ืขืŸ ืจืขื–ื•ืœื˜ืึทื˜ ืžืขืจ ื•ื•ื™ ื‘ืœื•ื™ื– RGB / RGBA ื‘ื™ืœื“ืฆืขืœืŸ.
  • ืจื•ื‘ึฟ ืงืึธื“ืขืงืก ืงืขื ืขืŸ ืจืขื–ื•ืœื˜ืึทื˜ ืึธืจื™ื’ื™ื ืขืœ ื‘ื™ืœื“ืฆืขืœืŸ ืึธืŸ ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ืฆื• RGB.
  • ืื™ืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ืงืึธื“ืขืงืก ืื™ืŸ ืงื™ื™ืŸ ืฉืคึผืจืึทืš, ืื•ืŸ ืื•ื™ืš ืœื™ื™ื’ืŸ / ืึทืจืึธืคึผื ืขืžืขืŸ ื–ื™ื™ ืึธืŸ ืจื™ืงืึธืžืคึผื™ื™ืœื™ื ื’ ื“ื™ ื’ืื ืฆืข ืคึผืจื•ื™ืขืงื˜.
  • ื•ืคื”ื™ื˜ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ืขืจ ืึธืจื™ื’ื™ื ืขืœ ื‘ื™ืœื“.
  • "ืคึผืจืึธื‘ื™ื ื’" ืื™ื– ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืงืจื™ื’ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ืึท ื‘ื™ืœื“ ืึธืŸ ื“ื™ืงืึธื•ื“ื™ื ื’ ื“ื™ ืคึผื™ืงืกืขืœ ื“ืึทื˜ืŸ.
  • ื’ืจื™ื™ืก ืื•ืŸ ื’ื™ื›ืงื™ื™ึทื˜.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’