8-900-374-94-44
[email protected]
Slide Image
МСню

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями c – Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями Π² C++? β€” Toster.ru

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠ±Π·ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями

Π’ ΠΌΠΈΡ€Π΅ свободного ПО ΠΈΠ΄Ρ‘Ρ‚ гигантская Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ созданиСм ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с растровой Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. И это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ сущСствуСт Π½Π΅ΠΌΠ°Π»ΠΎ бСсплатных ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнноС ядро. Krita ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ pigment для управлСния Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈ kritaimage для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с растром. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Π² digiKam свой класс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π° Ρƒ GIMP своё ядро, хотя Π΅Π³ΠΎ Π΄Π°Π²Π½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° GEGL, Π½Ρƒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

БущСствуСт Ρ‚Ρ€ΠΈ общСпринятых способа хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ: ΠΌΠΎΠ·Π°ΠΈΠΊΠ° (tiles), растровыС строки ΠΈ Π±Π»ΠΎΠ±Ρ‹. Мозаика ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Krita, GIMP, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JAI ΠΈΠ· Java ΠΈ Photoshop, Π½Π΅ говоря ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π Π°Π·ΠΌΠ΅Ρ€ элСмСнтов ΠΌΠΎΠ·Π°ΠΈΠΊΠΈ Π² Krita β€” 64Γ—64 пиксСла. РастровыС строки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ вСрсии Cinepaint (Glasgow) ΠΈ MosfetPaint ΠœΠΎΡΡ„Π΅Ρ‚Π°. Π‘Π»ΠΎΠ±Ρ‹, насколько ΠΌΠ½Π΅ извСстно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² digiKam ΠΈ, разумССтся, Π² самом Qt: QImage сама ΠΏΠΎ сСбС малСнькая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ QPainter.

БоотвСтствСнно, Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ способа ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ растровыС Π΄Π°Π½Π½Ρ‹Π΅: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массивы ΠΌΠΎΠ·Π°ΠΈΠΊΠΈ, Π»ΠΈΠ½ΠΈΠΈ растровой Ρ€Π°Π·Π²Π΅Ρ€Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ Π±Π»ΠΎΠ±Ρ‹, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° копию изобраТСния, ΠΈΠ»ΠΈ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ соврСмСнныС языки программирования, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ВрСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Krita Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями. РаньшС это Π±Ρ‹Π»ΠΎ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Ρ‹ΠΌ вопросом, Π½ΠΎ сСйчас Krita дорос Π΄ΠΎ 100.000 строк ΠΊΠΎΠ΄Π° ΠΈ собствСнного ядра Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π½Π΅ самоС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅, Π·Π°Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈ простоС.

НаиболСС Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ ядру Krita Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ являСтся, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Vigra, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈ Krita, ΠΈ Vigra ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π΅ ΠΌΠΎΠ·Π°ΠΈΠΊΡƒ с растровыми строками, Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π’ части использования Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚ΠΎΠ² ΠΊ Π½Π΅ΠΌΡƒ Π±Π»ΠΈΠ·ΠΊΠ° Generic Image Libary ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Adobe.

Π”Π°Π»Π΅Π΅ слСдуСт вовсС Π½Π΅ ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ список Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ссли Ρƒ Π½ΠΈΡ… свои Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΌΠΎΠ΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ…. Π­Ρ‚ΠΎΡ‚ список Π±Ρ‹Π» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π΅Ρ‰Ρ‘ Π² 2003 Π³ΠΎΠ΄Ρƒ, Π½ΠΎ сСйчас Ρ€Π°Π΄ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ случая я Π΅Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ».

Krita

Π’ Krita своя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, состоящая ΠΈΠ· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΌΠΎΠ·Π°ΠΈΠΊΠΈ, классов слоёв ΠΈ KisPainter. Начиная с KOffice 2.0 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… пространств Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π² pigment, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ GUI. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚ KOffice, Π½ΠΎ это Π½Π΅ приоритСтная Π·Π°Π΄Π°Ρ‡Π°.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚
  • ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹
  • допускаСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ модСлями

НСдостатки:

  • Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° (ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ)
  • ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с большими изобраТСниями
  • Π½Π΅ поддСрТиваСтся индСксированный Ρ€Π΅ΠΆΠΈΠΌ

GIMP

Π’ GIMP слоТноС ядро, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ изобраТСниями Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 8Π±ΠΈΡ‚/ΠΊΠ°Π½Π°Π».

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • Ρ…ΠΎΡ€ΠΎΡˆΠΎ протСстировано, достаточно самоцСнно
  • ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования

НСдостатки:

  • написано Π½Π° C
  • нСдоступно Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
  • зависит ΠΎΡ‚ glib ΠΈ gtk
  • ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² 8 Π±ΠΈΡ‚ Π½Π° ΠΊΠ°Π½Π°Π»
  • Π½Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ β€” Β«ΠΏΡ€ΠΈΠ±ΠΈΡ‚Ρ‹ гвоздями» gray8, rgb8 ΠΈ, мСстами, индСксированный Ρ€Π΅ΠΆΠΈΠΌ
  • ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Vigra

Vigra β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° C++, написанная Π£Π»ΡŒΡ€ΠΈΡ…ΠΎΠΌ ΠšΡ‘Ρ‚Ρ‚Π΅ (Ullrich Koetthe) Π² качСствС дСмонстрации ΠΊ Π΅Π³ΠΎ докторской диссСртации ΠΏΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π§ΠΈΡ‚Π°Ρ‚ΡŒ эту Π΄ΠΈΡΡΠ΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ β€” сплошноС ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅. Она Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ повлияла Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Krita, хотя ΠΌΡ‹ Ρ‚ΡƒΡ‚ скорСС машСм собакой, Ρ‡Π΅ΠΌ хвостом, Π² ΠΏΠ»Π°Π½Π΅ использования шаблонов (Π‘ΠΎΡƒΠ΄Π΅Π²ΠΈΠΉΠ½ ссылаСтся Π½Π° ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΡƒ Β«ΠŸΠΎΡ‡Π΅ΠΌΡƒ собака виляСт хвостом? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΡƒΠΌΠ½Π΅Π΅ хвоста. Если Π±Ρ‹ хвост Π±Ρ‹Π» ΡƒΠΌΠ½Π΅Π΅, ΠΎΠ½ сам вилял Π±Ρ‹ собакой.Β» β€” ΠΏΡ€ΠΈΠΌ.ΠΏΠ΅Ρ€.).

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΡ‡Π΅Π½ΡŒ большими изобраТСниями
  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ Ρ†Π²Π΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· C++ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρ‹
  • соврСмСнный C++
  • достаточно ΠΌΠ°Π»Π°
  • Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°
  • интСрСсныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

НСдостатки:

  • Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования
  • Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Π° ΠΏΠΎΠ΄ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ

VIPS

VIPS β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° C, Π½ΠΎ с C++ интСрфСйсом. Она спроСктирована для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для исслСдований ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ Π² музСях Π²Ρ€ΠΎΠ΄Π΅ ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π“Π°Π»Π΅Ρ€Π΅ΠΈ (имССтся Π² Π²ΠΈΠ΄Ρƒ ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ГалСрСя Π² Π›ΠΎΠ½Π΄ΠΎΠ½Π΅ β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.). К Π½Π΅ΠΉ прилагаСтся графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π½Π° Gtk2 ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ nip2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Excel для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΡ‡Π΅Π½ΡŒ большими изобраТСниями
  • Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ модСлями
  • ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ Ρ†Π²Π΅Ρ‚Π°
  • интСрфСйс Π½Π° C++

НСдостатки:

  • Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€ΠΈΡΡƒΡŽΡ‚ (хотя Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°)
  • ΠΎΡ‡Π΅Π½ΡŒ большая

VXL

VXL β€” Π½Π°Π±ΠΎΡ€ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² акадСмичСских исслСдованиях ΠΏΡ€ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² вычислСний.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΡ‡Π΅Π½ΡŒ большими изобраТСниями
  • написана Π½Π° C++

НСдостатки:

  • Π΄Π°Π²Π½ΠΎ Π½Π΅ обновлялась
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свои Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ стандартный C++
  • ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для простых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² RGB
  • Π½Π΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ
  • ΠΏΠ»ΠΎΡ…ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°

CImg

CImg β€” прСкрасная ΠΈ ΠΎΡ‡Π΅Π½ΡŒ малСнькая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ эффСкты ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ зарисовываниС (inpainting) испорчСнных ΠΈΠ»ΠΈ ΡˆΡƒΠΌΠ½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Ρ‘ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ greycstoration Π² Krita.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • малСнькая
  • GPL
  • офигСнная

НСдостатки:

  • Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всё, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ GUI, ΠΆΠΈΠ²Ρ‘Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅
  • ΠΏΠ»ΠΎΡ…ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°

GEGL

ОТидалось, Ρ‡Ρ‚ΠΎ GEGL станСт ядром GIMP 2.0, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°ΡΡ‚ΠΎΠΏΠΎΡ€ΠΈΠ»Π°ΡΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° GEGL Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° 2.0 Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ (ΠΊΠ°ΠΊ извСстно, Π΅Π³ΠΎ ΠΈ Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° 2.4 Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.). Π’ Ρ†Π΅Π»ΠΎΠΌ, это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π½Π° C ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ собствСнного языка описания ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ изобраТСниями. НСдавно Ойвинд Колас aka Pippin ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π» ΡƒΠΏΠ°Π²ΡˆΠΈΠΉ Ρ„Π»Π°Π³ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π΅ΡΡ Π½Π°Π»ΠΈΡ†ΠΎ, Π½ΠΎ я всё ΠΆΠ΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΈ сходу ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ GIMP Π½Π° GEGL.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • малСнькая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°
  • вмСстС с babl ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ всС мыслимыС Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования
  • Pippin β€” ΠΊΠ»Ρ‘Π²Ρ‹ΠΉ

НСдостатки:

  • ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°
  • написана Π½Π° C
  • слоТный Ρ…Π°ΠΊ Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ„Π°ΠΊΡ‚Π° низкоуровнСвости Π‘

libart_lgpl

На самом Π΄Π΅Π»Π΅, libart β€” Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° скорСС ΠΊΠ°Π½Π²Π° для рисования ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Он ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Karbon 1.x для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Ρ„ΠΈΠ³ΡƒΡ€ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π° экран. Karbon 2.x Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Arthur. (

Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, libart_lgpl ΠΌΠ½ΠΎΠ³ΠΎ Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Scribus ΠΈ Π² GIMP. Π’ послСднСм β€” для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ², хотя Π΅ΡΡ‚ΡŒ ΠΏΠ»Π°Π½Ρ‹ ΡƒΠΉΡ‚ΠΈ Π½Π° librsvg β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.)

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • Π Π°Ρ„ Π›Π΅Π²ΡŒΠ΅Π½ (Raph Levien) β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ спСциалист, ΠΈ libart это своим качСством Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚

НСдостатки:

  • написана Π½Π° C
  • Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, это Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
  • слоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
  • устарСла ΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ Π·Π°ΠΌΠ΅Π½Π΅ Π½Π° Cairo ΠΈΠ»ΠΈ Arthur

java2D

Java2D β€” Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ полноцСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для созданий Β«Ρ€ΠΈΡΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…Β» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Она позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с изобраТСниями Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ пространствами, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ прСобразования пиксСлов изобраТСния ΠΈ тСкстом. Π‘Π°ΠΌΠΎ собой, написана ΠΎΠ½Π° Π½Π° Java, ΠΈ свободная рСализация ΠΏΠΎΠΊΠ° Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° (

Π•ΡΡ‚ΡŒ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€ Π΄Π°Π²Π½ΠΎ Π½Π΅ смотрСл Π² GNU Classpath β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.), Π΄Π° ΠΈ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Cairo. Когда-Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, основанная Π½Π° Java2D, Π½ΠΎ исходники я потСрял, Π° названия ΡƒΠΆΠ΅ Π½Π΅ помню.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • приятная ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
  • ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ (Π΄Π°ΠΆΠ΅ слишком)

НСдостатки:

  • Java
  • Π½Π΅ свободна
  • содСрТит ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΎΠΉ лСгаси-Ρ…Π»Π°ΠΌ

ImageMagick/GraphicsMagick

GraphicsMagick β€” это ImageMagick ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ ΠΈ с фокусом Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ API. Π’Π΅ΠΏΠ΅Ρ€ΡŒ GM ΠΈ IM ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Ρ‘ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Π Π°Π½Π΅Π΅ Krita Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ использовал IM (Π΅Ρ‰Ρ‘ Π² 2004 ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ куски Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ ядра Π½Π° основС IM ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅Π³ΠΎ: оказалось, Ρ‡Ρ‚ΠΎ IM слоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

НСдавно ΠΌΡ‹ сдСлали Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ экспорта нСзависимыми ΠΎΡ‚ ImageMagick ΠΈ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ Ρ€Π°Π΄ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ API пСрСписали ΠΏΠΎΠ΄ GraphicsMagick.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • зрСлая
  • интСрфСйс Π½Π° C++
  • ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ
  • RGB ΠΈ CMYK (Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ)
  • Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½ΠΎ совмСстима с Krita
  • Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅

НСдостатки:

  • Π³Π»ΡƒΠ±ΠΈΠ½Π° Ρ†Π²Π΅Ρ‚Π° β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Тёстко Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ компиляции
  • Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ использования

The Visualization Toolkit (VTK)

ΠžΠ³Ρ€ΠΎΠΌΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Π‘++ ΠΎΡ‚ создатСлСй CMake для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π²ΡƒΡ…- ΠΈ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ изобраТСниями ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Блишком огромная, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я ΠΌΠΎΠ³ Π΅Ρ‘ всСстороннС ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡ‡ΠΈΡ… прилоТСниях Π½Π° Qt Π²Ρ€ΠΎΠ΄Π΅ Julius
  • вСроятно, ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°

НСдостатки:

  • ΠΊΠ½ΠΈΠ³Π° с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΊ Π½Π΅ΠΉ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³Π°
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ свой эквивалСнт make ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ CMake β€” Π½ΠΎ Π»Π°Π΄Π½ΠΎ, Π² наши Π΄Π½ΠΈ это ΠΆΠ΅ прСимущСство!
  • ΠΎΡ‡Π΅Π½ΡŒ большая

GIL

Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², зависящих ΠΎΡ‚ Boost ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями. ΠŸΡ€ΠΈΡΡ‚Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ GIL ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ»Π°Π½Π°Ρ€Π½Ρ‹ΠΌΠΈ изобраТСниями, Ρ‚.Π΅. с изобраТСниями, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ свой Π±Π»ΠΎΠΊ памяти, ΠΈ изобраТСниями, Π³Π΄Π΅ пиксСлы ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. GIL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² прилоТСниях Adobe ΠΈ Mission Photo (опСнсорсный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ‚ΠΎΡ€ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Π½Π° PyGtk).

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

  • Π² Adobe своё Π΄Π΅Π»ΠΎ ΠΊΡ€Π΅ΠΏΠΊΠΎ Π·Π½Π°ΡŽΡ‚
  • ΠΎΡ‡Π΅Π½ΡŒ соврСмСнный C++

НСдостатки:

  • довольно слоТно Π²Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ
  • Π½Π΅ совсСм полноцСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€” ΠΊΠ°ΠΊ ΠΏΡ€ΠΎ Π½Π΅Ρ‘ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ сказали, «это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… парсСров ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ΠΎΠ² для Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, которая позволяСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π»ΠΎ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΠΎΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ структуру»

ΠŸΡ€ΠΎΡ‡ΠΈΠ΅

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния β€” Perico, Digikam, Cinepaint (and Glasgow), PIL, Java Advanced Imaging API β€” ΠΈΡ… Π΅Ρ‰Ρ‘ много… Π― упомянул лишь Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ исслСдовал сам, ΠΊΠΎΠ³Π΄Ρ‰Π° взялся Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Krita ΠΈ искал Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ созданиС собствСнной Π±Ρ‹Π»ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ: ΠΌΡ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΈ создали свои, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. РСшСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ стоило Π½Π°ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ сдСлало Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅.

Π’ настоящСС врСмя ΠΌΡ‹ замСняСм Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прямого наслСдования Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… пространств Π½Π° Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ большС ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ написаниС ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… пространств. Нам большС Π½Π΅ понадобится Ρ†Π΅Π»Ρ‹Ρ… Π΄Π²Π° дня, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ L*a*b!


Автор: Boudewijn Rempt
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: http://www.valdyas.org/fading/index.cgi/software/image_libraries.html?seemore=y

digilinux.ru

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с изобраТСниями | Laboratory of Mathematical Methods of Image Processing

НС стоит Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ с изобраТСниями Ρ‡Π΅Ρ€Π΅Π· систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

БистСмныС Ρ‚ΠΈΠΏΡ‹ ΠΈ классы HBITMAP, Bitmap ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ рассчитаны, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π° Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран. Для Π½ΠΈΡ… сущСствуСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ рисования гСомСтричСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², Π²Ρ‹Π²ΠΎΠ΄Π° тСкста, Π½ΠΎ ΠΏΡ€ΠΈ этом отсутствуСт прямой доступ ΠΊ пиксСлям изобраТСния. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Bitmap::GetPixel ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся Ρ€Π°Π±ΠΎΡ‚Π° с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ нСпосрСдствСнно Π² памяти. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ двумя способами:

  • Написав свои классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями. ОсобСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ достаточного ΠΎΠΏΡ‹Ρ‚Π° программирования.
  • Π§Π΅Ρ€Π΅Π· DIB (device independent bitmap). Π”Π°Π½Π½Ρ‹ΠΉ способ рСкомСндуСтся Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΈΠΌΠΎ прямого доступа ΠΊ пискСлям изобраТСния Π½ΡƒΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Ρ‘ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GDI-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с пиксСлями Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ float, Π° Π½Π΅ byte

Экономия памяти Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΈ написании коммСрчСского ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ матСматичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ИспользованиС float ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ byte:
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ошибок, связанных с ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [0, 255]
  • НС Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ошибки округлСния.
  • МногиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ использовании Ρ‚ΠΈΠΏΠ° float, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Canny edge detection. НСкоторыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ использовании Ρ‚ΠΈΠΏΠ° byte для пиксСля.
Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² соврСмСнных процСссорах Ρ€Π°Π±ΠΎΡ‚Π° с float Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ быстрСС, Ρ‡Π΅ΠΌ с byte.

Π”Π΅Π»Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠΎ изобраТСниям Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ изобраТСния хранятся Π² памяти Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ построчно: сначала ΠΈΠ΄Ρ‘Ρ‚ 0-я строка, Π·Π°Ρ‚Π΅ΠΌ 1-я ΠΈ Ρ‚.Π΄. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ памяти осущСствляСтся быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ доступ ΠΊ памяти Π±Ρ‹Π» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ: Π²ΠΎ внСшнСм Ρ†ΠΈΠΊΠ»Π΅ производится ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ β€” ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ:

for (int y = 0; y Β Β for (int x = 0; x Β Β Β Β ...

Π’Π°ΠΊΠΆΠ΅ стоит Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ использовании Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² C# (Π° Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, написав класс-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов): Π² Π½ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ индСкс β€” это строка (Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°), Π° вторая β€” столбСц (X).

Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ графичСских Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (классы, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) для чтСния ΠΈ сохранСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…. Однако Ссли для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° BMP написаниС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ составляСт Ρ‚Ρ€ΡƒΠ΄Π°, Ρ‚ΠΎ для Π±ΠΎΠ»Π΅Π΅ популярных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JPEG ΠΈ PNG, написаниС своСго Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° β€” идСя Π½Π΅ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ….

БущСствуСт мноТСство сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями Π² C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ сохранСния ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² систСмС Windows для этих Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GDI+. ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ: Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² класс Gdiplus::Bitmap, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прямой доступ ΠΊ пиксСлям изобраТСния ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС.

НиТС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ для Microsoft Visual Studio 2010, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ чтСния ΠΈ записи ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

imaging.cs.msu.ru

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с изобраТСниями | Laboratory of Mathematical Methods of Image Processing

НС стоит Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ с изобраТСниями Ρ‡Π΅Ρ€Π΅Π· систСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

БистСмныС Ρ‚ΠΈΠΏΡ‹ ΠΈ классы HBITMAP, Bitmap ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ рассчитаны, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π½Π° Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран. Для Π½ΠΈΡ… сущСствуСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ рисования гСомСтричСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², Π²Ρ‹Π²ΠΎΠ΄Π° тСкста, Π½ΠΎ ΠΏΡ€ΠΈ этом отсутствуСт прямой доступ ΠΊ пиксСлям изобраТСния. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Bitmap::GetPixel ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ.

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ являСтся Ρ€Π°Π±ΠΎΡ‚Π° с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ нСпосрСдствСнно Π² памяти. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ двумя способами:

  • Написав свои классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями. ОсобСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ достаточного ΠΎΠΏΡ‹Ρ‚Π° программирования.
  • Π§Π΅Ρ€Π΅Π· DIB (device independent bitmap). Π”Π°Π½Π½Ρ‹ΠΉ способ рСкомСндуСтся Π² случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΈΠΌΠΎ прямого доступа ΠΊ пискСлям изобраТСния Π½ΡƒΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Ρ‘ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GDI-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ с пиксСлями Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ float, Π° Π½Π΅ byte

Экономия памяти Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΈ написании коммСрчСского ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ матСматичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ИспользованиС float ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ byte:
  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ошибок, связанных с ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [0, 255]
  • НС Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ошибки округлСния.
  • МногиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ использовании Ρ‚ΠΈΠΏΠ° float, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Canny edge detection. НСкоторыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ использовании Ρ‚ΠΈΠΏΠ° byte для пиксСля.
Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² соврСмСнных процСссорах Ρ€Π°Π±ΠΎΡ‚Π° с float Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ быстрСС, Ρ‡Π΅ΠΌ с byte.

Π”Π΅Π»Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠΎ изобраТСниям Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ изобраТСния хранятся Π² памяти Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ построчно: сначала ΠΈΠ΄Ρ‘Ρ‚ 0-я строка, Π·Π°Ρ‚Π΅ΠΌ 1-я ΠΈ Ρ‚.Π΄. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ памяти осущСствляСтся быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ доступ ΠΊ памяти Π±Ρ‹Π» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ: Π²ΠΎ внСшнСм Ρ†ΠΈΠΊΠ»Π΅ производится ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ β€” ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ:

for (int y = 0; y Β Β for (int x = 0; x Β Β Β Β ...

Π’Π°ΠΊΠΆΠ΅ стоит Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ использовании Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² C# (Π° Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, написав класс-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΡƒ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов): Π² Π½ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ индСкс β€” это строка (Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°), Π° вторая β€” столбСц (X).

Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ графичСских Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (классы, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) для чтСния ΠΈ сохранСния ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…. Однако Ссли для Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° BMP написаниС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ составляСт Ρ‚Ρ€ΡƒΠ΄Π°, Ρ‚ΠΎ для Π±ΠΎΠ»Π΅Π΅ популярных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JPEG ΠΈ PNG, написаниС своСго Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° β€” идСя Π½Π΅ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ….

БущСствуСт мноТСство сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями Π² C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ сохранСния ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² систСмС Windows для этих Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ GDI+. ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ: Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² класс Gdiplus::Bitmap, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прямой доступ ΠΊ пиксСлям изобраТСния ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС.

НиТС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ для Microsoft Visual Studio 2010, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ чтСния ΠΈ записи ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

imaging.cs.msu.ru

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для 2D рисования Π½Π° C/C++

НиТС рассмотрСны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° C/C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² основС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ 2D финансовых Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² тСхничСского Π°Π½Π°Π»ΠΈΠ·Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ трСбованиями ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • НаличиС C/C++ API.
  • НаличиС Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.
  • НаличиС Python-ΠΏΠ°ΠΊΠ΅Ρ‚Π° для экспСримСнтов.
  • ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Python-ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΈ рисовании >30000 Π»ΠΈΠ½ΠΈΠΉ.
  • ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сглаТивания.

Π˜Ρ‚ΠΎΠ³ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ:

  • Pillow для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Python β€” быстрый, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
  • gMagick++ ΠΈΠ»ΠΈ Magick++ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ C/C++ β€” быстрыС, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° сайтС ImageMagick.
  • SKIA ΠΈΠ»ΠΈ Cairo для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ.

GraphicsMagic (Magick++)

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для C++ Ρ„ΠΎΡ€ΠΊΠ° GraphicsMagickΒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ImageMagick. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ родитСля (IMagick) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΡƒΠΏΠΎΡ€ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ бСзопасности.

Π‘Π°ΠΉΡ‚:Β http://www.graphicsmagick.org/
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:Β http://www.imagemagick.org/Magick++/Image++.html

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для C++:Β http://www.graphicsmagick.org/Magick++/
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Python:Β https://github.com/hhatto/pgmagick

Python-ΠΏΠ°ΠΊΠ΅Ρ‚ PgMagick ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с GraphicsMagick, Ρ‚Π°ΠΊ ΠΈ с ImageMagick. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python-Boost. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Wand-Py Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² дСсятки Ρ€Π°Π· быстрСС, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΡƒΠ΄ΡˆΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для Python (Π½Π°Π΄ΠΎ всС ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ C++-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Magick++).

ImageMagick (Magick++)

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для C++ популярной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ImageMagick (IMagick). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ….

Π‘Π°ΠΉΡ‚:Β http://imagemagick.org/script/index.php
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:Β http://www.imagemagick.org/Magick++/Image++.html

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для C++:Β http://imagemagick.org/Magick++/
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Python:Β http://docs.wand-py.org/
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ IPython:Β https://gist.github.com/emcconville/a0dd134bfa2b12c96377

Wand-Py Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Pillow (Ρ„ΠΎΡ€ΠΊ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PIL для Python). НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ (добавляСт сглаТиваниС ΠΈ Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅).

Cairo

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° написанная Π½Π° C для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для рисования Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠΌ отмСчаСтся (Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ…) Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ докумСнтация. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ SKIA (Π΅ΡΡ‚ΡŒ сравнСниС Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅).

Π‘Π°ΠΉΡ‚: https://www.cairographics.org/
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:Β https://www.cairographics.org/samples/

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для C++:Β https://www.cairographics.org/cairomm/
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Python:Β http://pythonhosted.org/cairocffi/

SKIA

ГрафичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° написанная Π½Π° C++ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Google Chrome, Chrome OS, Mozilla Firefox, Android. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ Google. ΠšΡƒΡ†Π°Ρ докумСнтация, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Cairo Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС.

Π‘Π°ΠΉΡ‚:Β https://skia.org/
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:Β https://skia.org/user/api/skcanvas

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Python:Β https://github.com/expobrain/python-skia

AGG (Anti-Grain)

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° растровой Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ написанная Π½Π° C++. ПослСдняя вСрсия Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² 2006 Π³ΠΎΠ΄Ρƒ. Π•ΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ данная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π»Π΅ΠΆΠΈΡ‚ Π² основС PIL для Python (ΠΈ Pillow).

Π‘Π°ΠΉΡ‚:Β http://www.antigrain.com/

GD

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с растровой Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ написанная Π½Π° C. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π° Π² PHP. Π’ Python с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ доступСн ΠΏΠ°ΠΊΠ΅Ρ‚ Pillow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π‘Π°ΠΉΡ‚:Β https://libgd.github.io/
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:Β https://libgd.github.io/pages/faq.html

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Python:Β https://github.com/Solomoriah/gdmodule

Pillow (Python-ΠΏΠ°ΠΊΠ΅Ρ‚)

Π€ΠΎΡ€ΠΊ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PIL для Python. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠ°Π»ΠΎ, Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΌΠΎΠΆΠ½ΠΎ.

Π‘Π°ΠΉΡ‚:Β http://pillow.readthedocs.io/
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:Β http://pillow.readthedocs.io/en/3.3.x/reference/ImageDraw.html

Π”Ρ€ΡƒΠ³ΠΎΠ΅

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для C/C++ с кратким описаниСм ΠΈ ссылкой Π½Π° источник.

https://github.com/fffaraz/awesome-cpp

VKontakte

Facebook

Twitter

quantrum.me

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *