کتابخانه رمزگشایی تصویر 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 و غیره)؛
  • توابع مدیریت رنگ (استفاده از پروفایل های ICC و غیره)

ساده ترین مثال رمزگشایی در C:

ساختار sail_context *context;

SAIL_TRY(sail_init(&context));

ساختار sail_image *image;
کاراکتر بدون علامت *image_pixels;

SAIL_TRY(sail_read(مسیر،
متن نوشته،
&تصویر،
(باطل **)&image_pixels));

/*
* در اینجا پیکسل های دریافتی را پردازش کنید.
* برای انجام این کار، از image->width، image->height، image->bytes_per_line استفاده کنید.
* و image->pixel_format.
*/

/* پاک کردن */
رایگان (تصویر_پیکسل)؛
sail_destroy_image(image);

شرح مختصری از سطوح API:

  • تازه کار: "من فقط می خواهم این JPEG را دانلود کنم"
  • پیشرفته: "من می خواهم این GIF متحرک را از حافظه بارگیری کنم"
  • غواص در اعماق دریا: "من می خواهم این GIF متحرک را از حافظه بارگیری کنم و کنترل کامل روی کدک ها و خروجی پیکسلی که انتخاب می کنم داشته باشم."
  • غواص فنی: "من همه چیز بالا و منبع داده خودم را می خواهم"

رقبای مستقیم از همان منطقه:

  • Free Image
  • شیطان
  • SDL_Image
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

تفاوت با سایر کتابخانه ها:

  • Human API با موجودیت های مورد انتظار - تصاویر، پالت ها و غیره.
  • اکثر کدک ها می توانند بیش از پیکسل های RGB/RGBA خروجی داشته باشند.
  • اکثر کدک ها می توانند پیکسل های اصلی را بدون تبدیل به RGB تولید کنند.
  • شما می توانید کدک ها را به هر زبانی بنویسید و همچنین بدون کامپایل مجدد کل پروژه، آنها را اضافه یا حذف کنید.
  • اطلاعات مربوط به تصویر اصلی را حفظ کنید.
  • "کاوش" فرآیند به دست آوردن اطلاعات در مورد یک تصویر بدون رمزگشایی داده های پیکسل است.
  • اندازه و سرعت.

منبع: opennet.ru

اضافه کردن نظر