LibWebP-NETによるWebPフォーマットピクチャの復号と符号化

3895 ワード

この文章は後で私の新しいブログで更新して、どんな疑問が私の新しいブログの中で提出することができます
https://blog.clso.fun/posts/2019-03-02/vb-net-webp.html
 
WebPフォーマットはグーグルが開発し発展した最新のネットワーク画像フォーマットであり、圧縮率が高く、復号が速く、著作権免除、オープンソースなどの利点がある.
ほとんどの先進的なWebブラウザ、画像ブラウザはこのフォーマットをサポートしており、WindowsユーザーはWebP Codecをインストールすることができます. for WindowsはシステムでWebP画像を調べます.
WebPはオープンソース形式ですが、現在.NETプラットフォームのWebPに対するサポートはよくなく、サードパーティのクラスライブラリに依存してWebP形式をロードするしかありません.
ここではLibWebP-NETというオープンソースクラスライブラリをお勧めします..NETではWebPピクチャを復号して符号化することができます.
LibWebP-NETは単純なWebPのC++クラスライブラリの.NETパッケージにすぎず、そのコアコードはlibwebp.dllというダイナミックリンクライブラリファイルに残っているため、通常のASP.NET空間での実行はサポートされていない.
また、ダイナミックリンクライブラリはシステムに制限されているため、x 86とx 64の2つのバージョンのC++クラスライブラリファイルがあり、異なるオペレーティングシステムに適用されます.
個人的には.NETエンジニアリングプロパティのコンパイルオプションでx 86互換モードを使用することをお勧めします.これにより、x 86版のlibwebp.dllファイルを添付するだけでいいです.
 
次のテストコードは、LibWebPNETソースのクラスライブラリファイルを修正してくれます.ここをクリックしてダウンロードできます.
高速符号化と復号関数のみを静的メソッドに設定した(オリジナルでは関連する復号クラスをインスタンス化する必要があり、煩雑である).
使用する前に、参照を覚えておいてください. Imazen.WebP.dllクラスライブラリ libwebp.dllダイナミックリンクライブラリは、メインプログラムの実行ディレクトリに解放されます.
 
復号方式は非常に簡単です
Dim bs As Byte() = IO.File.ReadAllBytes("   WebP  ")
Dim img As Bitmap = Imazen.WebP.SimpleDecoder.DecodeFromBytes(bs, bs.Length)

これにより、WebPピクチャが.NETで識別可能なピクチャオブジェクトであることを復号し、他の様々な動作に適用することができる.
 
符号化方式はやや複雑である
Dim pic As Image = Image.FromFile("     ")

' WebP    Format32bppArgb   Format32bppRgb       
'
Using bmp As New Bitmap(pic.Width, pic.Height, Imaging.PixelFormat.Format32bppArgb)
    '          
    Using g As Graphics = Graphics.FromImage(bmp)
        g.DrawImage(pic, 0, 0, pic.Width, pic.Height)
    End Using
    '        
    Using fs As IO.FileStream = IO.File.Create("     .webp")
        Imazen.WebP.SimpleEncoder.Encode(bmp, fs, 100)
    End Using

End Using

WebP符号化はサポートのみ Format 32 bppArgbとFormat 32 bppRgbですが、現在主流のネットワークピクチャフォーマットはこの2つのピクセルフォーマットではありませんので、変換する前に、自分でピクチャを符号化する必要があります.
 
LibWebP-NETにより、WebPという将来のネットワーク画像フォーマットを簡単に抱擁することができます..NETは今後、サードパーティのクラスライブラリを必要とせずにWebPのサポートを内蔵することを望んでいます.
転載先:https://www.cnblogs.com/clso/p/5331899.html