เบ›เปˆเบญเบเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบเบฒเบ™เบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบฎเบนเบšเบžเบฒเบš SAIL 0.9.0-pre12

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบฎเบนเบšเบžเบฒเบš SAIL เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™ C เบˆเบฒเบเบ•เบปเบงเป€เบšเบดเปˆเบ‡เบฎเบนเบšเบžเบฒเบš KSquirrel เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™, เปเบ•เปˆเบกเบต API abstract เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ. เบซเปเบชเบฐเปเบธเบ”เบžเป‰เบญเบกเบ™เบณเปƒเบŠเป‰เปเบฅเป‰เบง, เปเบ•เปˆเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡. เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡ Binary เปเบฅเบฐ API เปเบกเปˆเบ™เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™. เบเบฒเบ™เบชเบฒเบ—เบดเบ”.

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡ SAIL

  • เป„เบงโ€‹เปเบฅเบฐโ€‹เบ‡เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹;
  • เบ‚เบฝเบ™เปƒเบ™ C11 เบ”เป‰เบงเบเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบฑเบš C++17;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฎเบนเบšเปเบšเบšเบฎเบนเบšเบžเบฒเบšเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบญเบญเบเปเบฅเบฐเป€เบžเบตเปˆเบกเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบˆเบฒเบเบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒ;
  • เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบเป„เบŸเบฅเปŒ, เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบซเบผเบฒเบเบซเบ™เป‰เบฒเปเบฅเบฐเบฎเบนเบšเบžเบฒเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง;
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ™เบดเบเบปเบกเปเบกเปˆเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™ libjpeg, libpng, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
  • เบ‚เป‰เบฒเบกเป€เบงเบ—เบต: Linux, Windows, macOS;
  • "Probing" - เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเบžเบฒเบšเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ–เบญเบ”เบฅเบฐเบซเบฑเบ” pixels;
  • เบŠเบทเปˆเบ™เบดเบ•เบดเบšเบธเบเบ„เบปเบ™ (เบšเปเปˆเบกเบต FIMULTIBITMAP);
  • เบเบฒเบ™เบญเปˆเบฒเบ™ เปเบฅเบฐเบ‚เบฝเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒ ICC;
  • เบชเบปเปˆเบ‡ RGBA เบซเบผเบท BGRA pixels;
  • เบชเบปเปˆเบ‡เบ„เบทเบ™ pixels เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš (เบ•เบปเบงเบขเปˆเบฒเบ‡, CMYK) เบ–เป‰เบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ codec;

เบฅเบฒเบเบŠเบทเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบžเบดเบกเป€เบœเบตเบเปเบœเปˆเบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ:

  • API เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบ„เบท: เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ sail_context *context; SAIL_TRY(sail_init(&context)); struct sail_image *เบฎเบนเบš; unsigned char *image_pixels; SAIL_TRY(sail_read(path, context, &image, (void **)&image_pixels)); ...free(image_pixels); sail_destroy_image(เบฎเบนเบš);

    เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™: struct sail_image *image; SAIL_TRY(sail_read_file(เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, &เบฎเบนเบšเบžเบฒเบš); ... sail_destroy_image(เบฎเบนเบšเบžเบฒเบš);

  • เป€เบžเบตเปˆเบก BMP, GIF, TIFF เบฎเบนเบšเปเบšเบš;
  • เบกเบตเบขเบนเปˆเปƒเบ™ VCPKG เปƒเบ™เบ—เบธเบเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบเบปเบเป€เบงเบฑเป‰เบ™ UWP;
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš Benchmark เบˆเบฑเบ”เบžเบตเบกเบกเบฒ;
  • เบเบฒเบ™เบœเบนเบเบกเบฑเบ” C++ เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ› C++17;
  • เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเบเปเบฒเบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบงเป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบ”เป‰เบงเบเบ•เบปเบงเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™;
  • เบ”เบฝเบงเบ™เบตเป‰เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ CMake find_package() เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ SAIL;
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบชเบฐเบ–เบดเบ•เบด (SAIL_STATIC=ON);
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เบปเบงเปเบ›เบ‡เบชเบฑเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบปเปˆเบงเป„เบ›เบ”เบฝเบง (SAIL_COMBINE_CODECS=ON);
  • เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ ยตnit;

เบงเบดเบ—เบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒ

  • Linux - vcpkg, เบเบปเบ”เบฅเบฐเบšเบฝเบš Debian เบเบฑเบ‡เบกเบตเบขเบนเปˆ
  • Windows - vcpkg
  • macOS - brew

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™