SAIL рдЫрд╡рд┐ рдбрд┐рдХреЛрдбрд┐рдЩ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрд▓рдмреНрдз рдЫ

MIT рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдпреЛ рдХреНрд░рд╕-рдкреНрд▓реЗрдЯрдлрд░реНрдо рдЫрд╡рд┐ рдбрд┐рдХреЛрдбрд┐рдЩ рдкреБрд╕реНрддрдХрд╛рд▓рдп SAILред SAIL C рдорд╛ рдкреБрди: рд▓реЗрдЦрд┐рдПрдХреЛ рд▓рд╛рдореЛ-рдЕрд╕рдорд░реНрдерд┐рдд рдЫрд╡рд┐ рджрд░реНрд╢рдХрдмрд╛рдЯ рдХреЛрдбреЗрдХрд╣рд░реВрдХреЛ рдкреБрди: рдмреНрд░рд╛рдиреНрдбрд┐рдЩ рд╣реЛред KSquirrel, рддрд░ рдЙрдЪреНрдЪ рд╕реНрддрд░рдХреЛ рдПрдмреНрд╕реНрдЯреНрд░реНрдпрд╛рдХреНрдЯ API рд░ рдзреЗрд░реИ рд╕реБрдзрд╛рд░рд╣рд░реВрдХреЛ рд╕рд╛рдеред рд▓рдХреНрд╖рд┐рдд рджрд░реНрд╢рдХрд╣рд░реВ: рдЫрд╡рд┐ рджрд░реНрд╢рдХрд╣рд░реВ, рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕, рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдореЗрдореЛрд░реАрдорд╛ рдЫрд╡рд┐рд╣рд░реВ рд▓реЛрдб рдЧрд░реНрджреИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╛рд╕ рдЕрдиреНрддрд░реНрдЧрдд рдЫ, рддрд░ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдпреЛрдЧрдпреЛрдЧреНрдп рдЫред рд╡рд┐рдХрд╛рд╕рдХреЛ рдпрд╕ рдЪрд░рдгрдорд╛ рдмрд╛рдЗрдирд░реА рд░ рд╕реНрд░реЛрдд рдХреЛрдб рдЕрдиреБрдХреВрд▓рддрд╛рдХреЛ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЫреИрдиред

рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ:

  • рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдмрд┐рдирд╛ C рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рд╕рд░рд▓, рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рд░ рджреНрд░реБрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдХреЛрдбреЗрдХреНрд╕ рдмрд╛рд╣реЗрдХ);
  • рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд░рд▓, рдмреБрдЭреНрди рдпреЛрдЧреНрдп рд░ рдПрдХреИ рд╕рдордпрдорд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА API;
  • C++ рдХреЛ рд▓рд╛рдЧрд┐ рдмрд╛рдЗрдиреНрдбрд┐рдЩ;
  • рдЫрд╡рд┐ рдврд╛рдБрдЪрд╛рд╣рд░реВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рд▓реЛрдб рдЧрд░рд┐рдПрдХрд╛ рдХреЛрдбреЗрдХрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЫрдиреН;
  • рдлрд╛рдЗрд▓, рдореЗрдореЛрд░реА, рд╡рд╛ рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдмрд╛рдЯ рдЫрд╡рд┐рд╣рд░реВ рдкрдвреНрдиреБрд╣реЛрд╕реН (рд░ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН);
  • рдлрд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди, рд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдЫрд╡рд┐ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджреИ рдЬрд╛рджреБрдИ рд╕рдВрдЦреНрдпрд╛;
  • рд╣рд╛рд▓ рд╕рдорд░реНрдерд┐рдд рдврд╛рдБрдЪрд╛рд╣рд░реВ: png (рдкрдвреНрдиреБрд╣реЛрд╕реН, рд╡рд┐рдиреНрдбреЛрдЬ рдорд╛рддреНрд░), JPEG (рдкрдвреНрдиреБрд╣реЛрд╕реН, рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН) PNG (рдкрдвреНрдиреБрд╣реЛрд╕реН, рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН)ред
    рдирдпрд╛рдБ рдврд╛рдБрдЪрд╛ рдердкреНрдиреЗ рдХрд╛рдо рднрдЗрд░рд╣реЗрдХреЛ рдЫред KSquirrel-libs рд▓реЗ рд▓рдЧрднрдЧ 60 рдврд╛рдБрдЪрд╛рд╣рд░реВрд▓рд╛рдИ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдврд╛рдБрдЪрд╛рд╣рд░реВ рдкрд╣рд┐рд▓реЛ рд▓рд╛рдЗрдирдорд╛ рдЫрдиреН;

  • рдкрдвреНрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВрд▓реЗ рд╕рдзреИрдВ RGB рд░ RGBA рдврд╛рдБрдЪрд╛рдорд╛ рдкрд┐рдХреНрд╕реЗрд▓рд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рд╕рдХреНрдЫ;
  • рдХреЗрд╣реА рдХреЛрдбреЗрдХрд╣рд░реВрд▓реЗ рдврд╛рдБрдЪрд╛рд╣рд░реВрдХреЛ рдЕрдЭ рдареВрд▓реЛ рд╕реВрдЪреАрдорд╛ рдкрд┐рдХреНрд╕реЗрд▓рд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН;
  • рдзреЗрд░реИрдЬрд╕реЛ рдХреЛрдбреЗрдХрд╣рд░реВрд▓реЗ SOURCE рдкрд┐рдХреНрд╕реЗрд▓рд╣рд░реВ рдкрдирд┐ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпреЛ рдЙрдкрдпреЛрдЧреА рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, CMYK рд╡рд╛ YCCK рдЫрд╡рд┐рд╣рд░реВрдмрд╛рдЯ рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐;
  • ICC рдкреНрд░реЛрдлрд╛рдЗрд▓рд╣рд░реВ рдкрдвреНрдиреЗ рд░ рд▓реЗрдЦреНрдиреЗ;
  • C, Qt, SDL рдорд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ;
  • рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдорд╣рд░реБ:
    рд╡рд┐рдиреНрдбреЛрдЬ (рдЗрдиреНрд╕реНрдЯрд▓рд░), macOS (рдмреНрд░реВ) рд░ рд▓рд┐рдирдХреНрд╕ (рдбреЗрдмрд┐рдпрди)ред

SAIL рд▓реЗ рдХреЗ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрди:

  • рдЫрд╡рд┐ рд╕рдореНрдкрд╛рджрди;
  • рдЕрдиреНрддрд░реНрдирд┐рд╣рд┐рдд рдХреЛрдбреЗрдХреНрд╕ (libjpeg, рдЖрджрд┐) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдмрд╛рд╣реЗрдХ рд░рдЩ рд╕реНрдкреЗрд╕ рд░реВрдкрд╛рдиреНрддрд░рдг рдХрд╛рд░реНрдпрд╣рд░реВ;
  • рд░рдЩ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд╛рд░реНрдпрд╣рд░реВ (рдЖрдИрд╕реАрд╕реА рдкреНрд░реЛрдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ, рдЖрджрд┐)

C рдорд╛ рдбрд┐рдХреЛрдбрд┐рдЩ рдХреЛ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:

struct sail_context *рд╕рдиреНрджрд░реНрдн;

SAIL_TRY(sail_init(&context));

struct sail_image *рдЫрд╡рд┐;
рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░ * image_pixels;

SAIL_TRY(sail_read(рдкрде,
рд╕рдиреНрджрд░реНрдн,
рдЫрд╡рд┐,
(void **)&image_pixels));

/*
* рдпрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд рдкрд┐рдХреНрд╕реЗрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред
* рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдЫрд╡рд┐-> рдЪреМрдбрд╛рдИ, рдЫрд╡рд┐-> рдЙрдЪрд╛рдЗ, рдЫрд╡рд┐-> рдмрд╛рдЗрдЯреНрд╕_рдкрд░_рд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН,
* рд░ image->pixel_formatред
*/

/* рд╕рдлрд╛ рдЧрд░реНрдиреБ */
рдирд┐: рд╢реБрд▓реНрдХ (рдЫрд╡рд┐_рдкрд┐рдХреНрд╕реЗрд▓);
sail_destroy_image(рдЫрд╡рд┐);

API рд╕реНрддрд░рд╣рд░реВрдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг:

  • рдирдпрд╛рдБ: "рдо рдпреЛ JPEG рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ"
  • рдЙрдиреНрдирдд: "рдо рдореЗрдореЛрд░реАрдмрд╛рдЯ рдпреЛ рдПрдирд┐рдореЗрдЯреЗрдб GIF рд▓реЛрдб рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ"
  • рдЧрд╣рд┐рд░реЛ рд╕рдореБрджреНрд░ рдЧреЛрддрд╛рдЦреЛрд░: "рдо рдореЗрдореЛрд░реАрдмрд╛рдЯ рдпреЛ рдПрдирд┐рдореЗрдЯреЗрдб GIF рд▓реЛрдб рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рд░ рдореИрд▓реЗ рд░реЛрдЬреЗрдХреЛ рдХреЛрдбреЗрдХреНрд╕ рд░ рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рдкреВрд░реНрдг рдирд┐рдпрдиреНрддреНрд░рдг рд░рд╛рдЦреНрди рдЪрд╛рд╣рдиреНрдЫреБред"
  • рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдЧреЛрддрд╛рдЦреЛрд░: "рдо рдорд╛рдерд┐рдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рдЪрд╛рд╣рдиреНрдЫреБ, рд░ рдореЗрд░реЛ рдЖрдлреНрдиреИ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд"

рдПрдЙрдЯреИ рдХреНрд╖реЗрддреНрд░рдмрд╛рдЯ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреАрд╣рд░реВ:

  • рдореБрдХреНрдд рдЫрд╡рд┐
  • рд░рд╛рдХреНрд╖рд╕
  • SDL_рдЫрд╡рд┐
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реБ рднрдиреНрджрд╛ рднрд┐рдиреНрдирддрд╛:

  • рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдВрд╕реНрдерд╛рд╣рд░реВ - рдЫрд╡рд┐рд╣рд░реВ, рдкреНрдпрд╛рд▓реЗрдЯрд╣рд░реВ, рдЗрддреНрдпрд╛рджрд┐рдХреЛ рд╕рд╛рде рдорд╛рдирд╡ APIред
  • рдзреЗрд░реИрдЬрд╕реЛ рдХреЛрдбреЗрдХрд▓реЗ RGB/RGBA рдкрд┐рдХреНрд╕реЗрд▓ рднрдиреНрджрд╛ рдмрдвреА рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рд╕рдХреНрдЫред
  • рдзреЗрд░реИ рдХреЛрдбреЗрдХрд╣рд░реВрд▓реЗ RGB рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдмрд┐рдирд╛ рдиреИ рдореВрд▓ рдкрд┐рдХреНрд╕реЗрд▓рд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред
  • рддрдкрд╛рдИрдВ рдХреБрдиреИ рдкрдирд┐ рднрд╛рд╖рд╛рдорд╛ рдХреЛрдбреЗрдХрд╣рд░реВ рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рд╕рдореНрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреБрди: рдХрдореНрдкрд╛рдЗрд▓ рдирдЧрд░реА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдердкреНрди/рд╣рдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
  • рдореВрд▓ рдЫрд╡рд┐ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • "рдкреНрд░реЛрдмрд┐рдВрдЧ" рднрдиреЗрдХреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдбрд╛рдЯрд╛ рдбрд┐рдХреЛрдб рдирдЧрд░реА рдЫрд╡рд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛред
  • рдЖрдХрд╛рд░ рд░ рдЧрддрд┐ред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди