SAIL เชˆเชฎเซ‡เชœ เชกเซ€เช•เซ‹เชกเชฟเช‚เช— เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€ เช‰เชชเชฒเชฌเซเชง เช›เซ‡

MIT เชฒเชพเชฏเชธเชจเซเชธ เชนเซ‡เช เชณ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เซเชฐเซ‹เชธ-เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช‡เชฎเซ‡เชœ เชกเซ€เช•เซ‹เชกเชฟเช‚เช— เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ SAIL. SAIL เช C เชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ‡เชฒเชพ เชฒเชพเช‚เชฌเชพ-เช…เชธเชฎเชฐเซเชฅเชฟเชค เช‡เชฎเซ‡เชœ เชตเซเชฏเซ‚เช…เชฐเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชกเซ‡เช•เซเชธเชจเซเช‚ เชฐเชฟเชฌเซเชฐเชพเชจเซเชกเชฟเช‚เช— เช›เซ‡ เช•เซ‡เชธเซเช•เซเชตเชพเชฏเชฐเชฒ, เชชเชฐเช‚เชคเซ เช‰เชšเซเชš-เชธเซเชคเชฐเชจเชพ เช…เชฎเซ‚เชฐเซเชค API เช…เชจเซ‡ เช…เชธเช‚เช–เซเชฏ เชธเซเชงเชพเชฐเชพเช“ เชธเชพเชฅเซ‡. เชฒเช•เซเชทเซเชฏ เชชเซเชฐเซ‡เช•เซเชทเช•เซ‹: เช›เชฌเซ€ เชฆเชฐเซเชถเช•เซ‹, เชฐเชฎเชค เชตเชฟเช•เชพเชธ, เช…เชจเซเชฏ เชนเซ‡เชคเซเช“ เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช›เชฌเซ€เช“ เชฒเซ‹เชก เช•เชฐเชตเซ€. เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชตเชฟเช•เชพเชธ เชนเซ‡เช เชณ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชตเชพเชชเชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ เช›เซ‡. เชตเชฟเช•เชพเชธเชจเชพ เช† เชคเชฌเช•เซเช•เซ‡ เชฌเชพเชˆเชจเชฐเซ€ เช…เชจเซ‡ เชธเซเชคเซเชฐเซ‹เชค เช•เซ‹เชก เชธเซเชธเช‚เช—เชคเชคเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€.

เชคเช•เซ‹

  • เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช…เชตเชฒเช‚เชฌเชจ (เช•เซ‹เชกเซ‡เช•เซเชธ เชธเชฟเชตเชพเชฏ) เชตเชฟเชจเชพ C เชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เชธเชฐเชณ, เช•เซ‹เชฎเซเชชเซ‡เช•เซเชŸ เช…เชจเซ‡ เชเชกเชชเซ€ เชชเซเชธเซเชคเช•เชพเชฒเชฏ;
  • เชธเชฐเชณ, เชธเชฎเชœเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชคเชฎเชพเชฎ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ API;
  • C++ เชฎเชพเชŸเซ‡ เชฌเชพเชˆเชจเซเชกเชฟเช‚เช—เซเชธ;
  • เช‡เชฎเซ‡เชœ เชซเซ‹เชฐเซเชฎเซ‡เชŸเซเชธ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชฒเซ‹เชก เช•เชฐเซ‡เชฒเชพ เช•เซ‹เชกเซ‡เช•เซเชธ เชฆเซเชตเชพเชฐเชพ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡;
  • เชซเชพเช‡เชฒ, เชฎเซ‡เชฎเชฐเซ€ เช…เชฅเชตเชพ เชคเซ‹ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ เช›เชฌเซ€เช“ เชตเชพเช‚เชšเซ‹ (เช…เชจเซ‡ เชฒเช–เซ‹);
  • เชซเชพเช‡เชฒ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฆเซเชตเชพเชฐเชพ เช…เชฅเชตเชพ เชคเซ‡เชจเชพ เชฆเซเชตเชพเชฐเชพ เช›เชฌเซ€เชจเซ‹ เชชเซเชฐเช•เชพเชฐ เชจเช•เซเช•เซ€ เช•เชฐเชตเซ‹ เชœเชพเชฆเซเชˆ เชธเช‚เช–เซเชฏเชพ;
  • เชนเชพเชฒเชฎเชพเช‚ เชธเชฎเชฐเซเชฅเชฟเชค เชซเซ‹เชฐเซเชฎเซ‡เชŸเซเชธ: เชเชชเซ€เชเชจเชœเซ€ (เชตเชพเช‚เชšเซ‹, เชซเช•เซเชค Windows), JPEG (เชตเชพเช‚เชšเซ‹, เชฒเช–เซ‹) PNG (เชตเชพเช‚เชšเซ‹, เชฒเช–เซ‹).
    เชจเชตเชพ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚ เช•เชพเชฎ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. KSquirrel-libs เชฒเช—เชญเช— 60 เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‡ เชเช• เช…เชฅเชตเชพ เชฌเซ€เชœเซ€ เชฐเซ€เชคเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชธเซŒเชฅเซ€ เชตเชงเซ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชซเซ‹เชฐเซเชฎเซ‡เชŸเซเชธ เชชเซเชฐเชฅเชฎ เชฒเชพเช‡เชจเชฎเชพเช‚ เช›เซ‡;

  • เชฐเซ€เชก เช“เชชเชฐเซ‡เชถเชจเซเชธ เชนเช‚เชฎเซ‡เชถเชพ RGB เช…เชจเซ‡ RGBA เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชชเชฟเช•เซเชธเซ‡เชฒ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡;
  • เช•เซ‡เชŸเชฒเชพเช• เช•เซ‹เชกเซ‡เช• เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ€ เชตเชงเซ เชฎเซ‹เชŸเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชชเชฟเช•เซเชธเซ‡เชฒ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡;
  • เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เซ‹เชกเซ‡เช• SOURCE เชชเชฟเช•เซเชธเซ‡เชฒเซเชธ เชชเชฃ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช† เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‡เช“ CMYK เช…เชฅเชตเชพ YCCK เช›เชฌเซ€เช“เชฎเชพเช‚เชฅเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡;
  • ICC เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชตเชพเช‚เชšเชตเชพ เช…เชจเซ‡ เชฒเช–เชตเชพ;
  • C, Qt, SDL เชฎเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹;
  • เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ:
    เชตเชฟเชจเซเชกเซ‹เช (เช‡เชจเซเชธเซเชŸเซ‹เชฒเชฐ), เชฎเซ‡เช•เซ‹เชธ (เชฌเซเชฐเซ) เช…เชจเซ‡ เชฒเชฟเชจเช•เซเชธ (เชกเซ‡เชฌเชฟเชฏเชจ).

SAIL เชถเซเช‚ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€:

  • เช›เชฌเซ€ เชธเช‚เชชเชพเชฆเชจ;
  • เช…เช‚เชคเชฐเซเช—เชค เช•เซ‹เชกเซ‡เช• (libjpeg, เชตเช—เซ‡เชฐเซ‡) เชฆเซเชตเชพเชฐเชพ เชชเซ‚เชฐเชพ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชธเชฟเชตเชพเชฏเชจเชพ เช•เชฒเชฐ เชธเซเชชเซ‡เชธ เช•เชจเซเชตเชฐเซเชเชจ เช•เชพเชฐเซเชฏเซ‹;
  • เชฐเช‚เช— เชตเซเชฏเชตเชธเซเชฅเชพเชชเชจ เช•เชพเชฐเซเชฏเซ‹ (ICC เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช—, เชตเช—เซ‡เชฐเซ‡)

C เชฎเชพเช‚ เชกเซ€เช•เซ‹เชกเชฟเช‚เช—เชจเซเช‚ เชธเซŒเชฅเซ€ เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃ:

struct sail_context *เชธเช‚เชฆเชฐเซเชญ;

SAIL_TRY(sail_init(&context));

struct sail_image *เช‡เชฎเซ‡เชœ;
เชธเชนเซ€ เชจ เช•เชฐเซ‡เชฒ char *image_pixels;

SAIL_TRY(เชธเซ‡เชฒ_เชฐเซ€เชก(เชชเชพเชฅ,
เชธเช‚เชฆเชฐเซเชญ,
&เช›เชฌเซ€,
(เช…เชฐเซเชฅเชพเชค **)&image_pixels));

/*
* เช…เชนเซ€เช‚ เชชเซเชฐเชพเชชเซเชค เชชเชฟเช•เซเชธเซ‡เชฒเซเชธเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‹.
* เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชˆเชฎเซ‡เชœ->เชชเชนเซ‹เชณเชพเชˆ, เชˆเชฎเซ‡เชœ->เช‰เช‚เชšเชพเชˆ, เชˆเชฎเซ‡เชœ->เชฌเชพเชˆเชŸเซเชธ_เชชเชฐ_เชฒเชพเชˆเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹,
* เช…เชจเซ‡ image->pixel_format.
*/

/* เชธเชพเชซ เช•เชฐเซ‹ */
เชฎเชซเชค (เช›เชฌเซ€_เชชเชฟเช•เซเชธเซ‡เชฒเซเชธ);
sail_destroy_image(เช›เชฌเซ€);

API เชธเซเชคเชฐเซ‹เชจเซเช‚ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชตเชฐเซเชฃเชจ:

  • เชจเชตเซ‹เชฆเชฟเชค: "เชฎเชพเชฐเซ‡ เชซเช•เซเชค เช† JPEG เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเซเช‚ เช›เซ‡"
  • เช…เชฆเซเชฏเชคเชจ: "เชนเซเช‚ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช† เชเชจเชฟเชฎเซ‡เชŸเซ‡เชก GIF เชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚"
  • เชกเซ€เชช เชธเซ€ เชกเชพเช‡เชตเชฐ: "เชนเซเช‚ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช† เชเชจเชฟเชฎเซ‡เชŸเซ‡เชก GIF เชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช…เชจเซ‡ เชนเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚ เชคเซ‡ เช•เซ‹เชกเซ‡เช•เซเชธ เช…เชจเซ‡ เชชเชฟเช•เซเชธเซ‡เชฒ เช†เช‰เชŸเชชเซเชŸ เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชฐเชพเช–เชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚."
  • เชŸเซ‡เช•เชจเชฟเช•เชฒ เชฎเชฐเชœเซ€เชตเซ‹: "เชฎเชจเซ‡ เช‰เชชเชฐเชจเซ€ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เชœเซ‹เชˆเช เช›เซ‡, เช…เชจเซ‡ เชฎเชพเชฐเซ‹ เชชเซ‹เชคเชพเชจเซ‹ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค"

เชธเชฎเชพเชจ เชตเชฟเชธเซเชคเชพเชฐเชจเชพ เชธเซ€เชงเชพ เชธเซเชชเชฐเซเชงเช•เซ‹:

  • เชซเซเชฐเซ€ เช‡เชฎเซ‡เชœ
  • เชกเซ‡เชตเชฟเชฒ
  • SDL_Image
  • WIC
  • imlib2
  • เชฌเซเชธเซเชŸ.เชœเซ€เช†เชˆเชเชฒ
  • gdk-pixbuf

เช…เชจเซเชฏ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชฅเซ€ เชคเชซเชพเชตเชคเซ‹:

  • เช…เชชเซ‡เช•เซเชทเชฟเชค เชเชจเซเชŸเชฟเชŸเซ€ เชธเชพเชฅเซ‡ เชฎเชพเชจเชต API - เช›เชฌเซ€เช“, เชชเซ…เชฒเซ‡เชŸเซเชธ, เชตเช—เซ‡เชฐเซ‡.
  • เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เซ‹เชกเซ‡เช• เชฎเชพเชคเซเชฐ RGB/RGBA เชชเชฟเช•เซเชธเซ‡เชฒ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.
  • เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช•เซ‹เชกเซ‡เช• RGB เชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชฎเซ‚เชณ เชชเชฟเช•เซเชธเซ‡เชฒ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.
  • เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เชญเชพเชทเชพเชฎเชพเช‚ เช•เซ‹เชกเซ‡เช•เซเชธ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹, เช…เชจเซ‡ เชธเชฎเช—เซเชฐ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชคเซ‡เชจเซ‡ เช‰เชฎเซ‡เชฐเซ€/เชฆเซ‚เชฐ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
  • เชฎเซ‚เชณ เช›เชฌเซ€ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชธเชพเชšเชตเซ‹.
  • "เชชเซเชฐเซ‹เชฌเชฟเช‚เช—" เช เชชเชฟเช•เซเชธเซ‡เชฒ เชกเซ‡เชŸเชพเชจเซ‡ เชกเซ€เช•เซ‹เชก เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช›เชฌเซ€ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช›เซ‡.
  • เช•เชฆ เช…เชจเซ‡ เชเชกเชช.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹