មានបណ្ណាល័យរូបភាព SAIL ឌិកូដ

ក្រោមអាជ្ញាប័ណ្ណ MIT បានផ្សព្វផ្សាយ បណ្ណាល័យការឌិកូដរូបភាពឆ្លងវេទិកា SAIL ។ SAIL គឺ​ជា​ការ​ដាក់​ឈ្មោះ​កូឌិក​ឡើង​វិញ​ពី​កម្មវិធី​មើល​រូបភាព​ដែល​មិន​បាន​គាំទ្រ​យូរ​មក​ហើយ​ដែល​ត្រូវ​បាន​សរសេរ​ឡើង​វិញ​ក្នុង C ខេអេសកំប្រុកប៉ុន្តែជាមួយនឹង API abstract កម្រិតខ្ពស់ និងការកែលម្អជាច្រើន។ ទស្សនិកជនគោលដៅ៖ អ្នកមើលរូបភាព ការអភិវឌ្ឍន៍ហ្គេម ការផ្ទុករូបភាពទៅក្នុងអង្គចងចាំសម្រាប់គោលបំណងផ្សេងទៀត។ បណ្ណាល័យ​នេះ​កំពុង​ស្ថិត​ក្នុង​ការ​អភិវឌ្ឍ ប៉ុន្តែ​អាច​ប្រើ​បាន​ហើយ។ ភាពឆបគ្នានៃប្រព័ន្ធគោលពីរ និងកូដប្រភពមិនត្រូវបានធានានៅដំណាក់កាលនៃការអភិវឌ្ឍន៍នេះទេ។

លក្ខណៈពិសេស:

  • បណ្ណាល័យសាមញ្ញ បង្រួម និងរហ័សដែលសរសេរជា C ដោយគ្មានភាពអាស្រ័យភាគីទីបី (លើកលែងតែកូឌិក);
  • សាមញ្ញ អាចយល់បាន និងក្នុងពេលតែមួយ API ដែលមានអនុភាពសម្រាប់តម្រូវការទាំងអស់;
  • ការចងសម្រាប់ C ++;
  • ទម្រង់រូបភាពត្រូវបានគាំទ្រដោយកូឌិកដែលផ្ទុកដោយថាមវន្ត។
  • អាន (និងសរសេរ) រូបភាពពីឯកសារ អង្គចងចាំ ឬសូម្បីតែប្រភពទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នក;
  • ការកំណត់ប្រភេទរូបភាពតាមផ្នែកបន្ថែមឯកសារ ឬដោយ លេខវេទមន្ត;
  • ទម្រង់ដែលគាំទ្របច្ចុប្បន្ន៖ អេអឹមខេ (អាន, វីនដូតែប៉ុណ្ណោះ), JPEG (អាន, សរសេរ) PNG (អាន, សរសេរ) ។
    ការងារកំពុងដំណើរការដើម្បីបន្ថែមទម្រង់ថ្មី។ KSquirrel-libs គាំទ្រប្រហែល 60 ទ្រង់ទ្រាយក្នុងមធ្យោបាយមួយ ឬមួយផ្សេងទៀត ទ្រង់ទ្រាយពេញនិយមបំផុតគឺជាលើកដំបូងនៅក្នុងជួរ។

  • ប្រតិបត្តិការអានតែងតែអាចបញ្ចេញភីកសែលជាទម្រង់ RGB និង RGBA ។
  • កូឌិកខ្លះអាចបញ្ចេញភីកសែលក្នុងបញ្ជីទ្រង់ទ្រាយធំជាង។
  • កូឌិកភាគច្រើនក៏អាចបញ្ចេញភីកសែល SOURCE ផងដែរ។ នេះមានប្រយោជន៍ ជាឧទាហរណ៍សម្រាប់អ្នកដែលចង់ទទួលបានព័ត៌មានពេញលេញពីរូបភាព CMYK ឬ YCCK ។
  • ការអាន និងសរសេរទម្រង់ ICC;
  • ឧទាហរណ៍នៅក្នុង C, Qt, SDL;
  • វេទិកាដែលគាំទ្រ៖
    វីនដូ (កម្មវិធីដំឡើង) macOS (ញ៉ាំ) និងលីនុច (ដេបៀន) ។

អ្វីដែល SAIL មិនផ្តល់៖

  • ការកែសម្រួលរូបភាព;
  • មុខងារបំប្លែងទំហំពណ៌ក្រៅពីអ្វីដែលផ្តល់ដោយកូឌិកមូលដ្ឋាន (libjpeg ។ល។);
  • មុខងារគ្រប់គ្រងពណ៌ (ការប្រើប្រាស់ទម្រង់ ICC ។ល។)

ឧទាហរណ៍សាមញ្ញបំផុតនៃការឌិកូដនៅក្នុង C:

struct sail_context *បរិបទ;

SAIL_TRY(sail_init(&បរិបទ));

struct sail_image * រូបភាព;
unsigned char *image_pixels;

SAIL_TRY(sail_read(ផ្លូវ,
បរិបទ,
&រូបភាព,
(ចាត់ទុកជាមោឃៈ **)&រូបភាព_ភីកសែល));

/*
* នៅទីនេះដំណើរការភីកសែលដែលទទួលបាន។
* ដើម្បីធ្វើដូចនេះសូមប្រើរូបភាព -> ទទឹងរូបភាព -> កម្ពស់រូបភាព -> បៃ_per_line,
* និងរូបភាព -> ភីកសែល_ទ្រង់ទ្រាយ។
*/

/* សម្អាត */
ឥតគិតថ្លៃ (រូបភាព_ភីកសែល);
sail_destroy_image (រូបភាព);

ការពិពណ៌នាសង្ខេបនៃកម្រិត API៖

  • អ្នកថ្មី៖ "ខ្ញុំគ្រាន់តែចង់ទាញយក JPEG នេះ"
  • កម្រិតខ្ពស់៖ "ខ្ញុំចង់ផ្ទុក GIF ដែលមានចលនានេះពីអង្គចងចាំ"
  • អ្នក​មុជ​ទឹក​ក្នុង​សមុទ្រ​ជ្រៅ៖ "ខ្ញុំ​ចង់​ផ្ទុក GIF មាន​ចលនា​នេះ​ពី​អង្គ​ចងចាំ ហើយ​មាន​ការ​គ្រប់​គ្រង​ពេញ​លេញ​លើ​កូឌិក និង​លទ្ធផល​ភីកសែល ដែល​ខ្ញុំ​ជ្រើសរើស។"
  • អ្នកមុជទឹកបច្ចេកទេស៖ "ខ្ញុំចង់បានអ្វីៗទាំងអស់ខាងលើ និងប្រភពទិន្នន័យផ្ទាល់ខ្លួនរបស់ខ្ញុំ"

ដៃគូប្រកួតប្រជែងផ្ទាល់ពីតំបន់ដូចគ្នា៖

  • រូបភាពឥតគិតថ្លៃ
  • DevIL
  • SDL_រូបភាព
  • WIC
  • imlib2
  • Boost.GIL
  • gdk-pixbuf

ភាពខុសគ្នាពីបណ្ណាល័យផ្សេងទៀត៖

  • API របស់មនុស្សដែលមានអង្គភាពរំពឹងទុក - រូបភាព ក្ដារលាយ។ល។
  • កូឌិកភាគច្រើនអាចបញ្ចេញបានច្រើនជាង RGB/RGBA ភីកសែល។
  • កូឌិកភាគច្រើនអាចបញ្ចេញភីកសែលដើមដោយមិនចាំបាច់បំប្លែងទៅជា RGB ។
  • អ្នក​អាច​សរសេរ​កូឌិក​ជា​ភាសា​ណា​មួយ ហើយ​ក៏​បន្ថែម/យក​វា​ចេញ​ដោយ​មិន​បាច់​ចងក្រង​គម្រោង​ទាំងមូល​ឡើង​វិញ។
  • រក្សាព័ត៌មានអំពីរូបភាពដើម។
  • “Probing” គឺជាដំណើរការនៃការទទួលបានព័ត៌មានអំពីរូបភាពដោយមិនបាច់ឌិកូដទិន្នន័យភីកសែល។
  • ទំហំនិងល្បឿន។

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់