WPF - podpora WebP rubrika: Programování: .Net

7 xxar3s
položil/-a 13.12.2019
 
upravil/-a 13.12.2019

WPF podporuje otváranie WebP súborov, ale nikde som nenašiel možnosť ako ich do WebP aj uložiť.

V System.Windows.Media.Imaging nenachádzam žiadny WebPEncoder.

Táto libka https://github.com/imazen/libwebp-net síce funguje (je to wrapper na libwep od googlu), ale zase je určená len pre WindowsForms Bitmapu. To má hneď niekoľko nevýhod:

  1. k aplikácii musím pribaliť ďalšie zbytočné dllko z WindowsForms: System.Drawing.dll
  2. BitmapSource treba konvertovať na Bitmap (a to ešte cez stream) čo je zbytočný medzikrok spomalujúci celý proces ukladania.
  3. Pri konverzii na Bitmap mi zmizne alfakanál. Takže z transparentného PNG sa po skonvertovaní stane netransparentné WebP podľa toho čo som čítal na webe samotná libwebp alfa kanál podporuje. Takže problém bude v konverzii BitmapSource na Bitmap, lebo keď som skúšal ukadať aj png z rovnakej WindowsForms Bitmap-y tak sa opať uložila bez alfakanálu, zato keď ukladám priamo z BitmapFrame tak sa uloží s alfakanálom. Nechápem prečo po konverzii ten kanál zmizne, keď WindowsForms bitmapa má nastavený PixelFormat na Format32bppArgb.

Takže budem potrebovať libku, ktorá pracuje priamo s WPF BitmapSource, alebo nejaký WebPEncoder (potomok BitmapEncoder) ktorý encoduje BitmapFrame neviete o niečom takom?

odkaz
7 xxar3s
odpověděl/-a 16.12.2019
 
upravil/-a 16.12.2019

Nakolko som nic rozumne nenasiel inspiroval som sa jednou Libkou pre Windows.Forms (https://github.com/imazen/libwebp-net) a napisal som vlastny wrapper zapuzdrujuci libwebp akurat je urceny pre WPF https://github.com/frank-hliva/WebP.NET

Je tam nie len Encoder ale aj Decoder. WPFko sice dekoder ma, ale tiez mal problemy s alfakanalom. Moj podporuje vsetko vratane alfakanalu.

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.