AVIFは「AV1 Image File Format」の略です。圧縮率が高い、透過処理ができる、可逆圧縮と非可逆圧縮を選べるという特長があり、Windows、Mac、Linux、Androidで使用できるソフトウェアと互換性があります。

AVIF形式のファイルをダウンロードした場合、これをどうやれば開くことができるのでしょうか? Windowsに標準搭載されているPaintソフトでは開くことができません。右クリック ⇒ アプリケーションで開く ⇒ Chromeなどを選択で開くことができます。

Selenium.WebDriverで変換する

これをPNG形式に変換するにはどうすればよいでしょうか? ブラウザを使えば開くことができるのでSeleniumを使ってスクリーンショットを取る方法があります。今回はこの方法でavif形式のファイルをPNG形式のファイルに変換します。

Selenium.WebDriver.ChromeDriverの追加

[NuGetパッケージの管理]メニューを選択して[Selenium.WebDriver]と[Selenium.WebDriver.ChromeDriver]を追加します。このとき自分のPCにはGoogle Chromeがインストールされてなければなりません。またGoogle ChromeのバージョンとChromeDriverのバージョンが同じでなければなりません。

変換したいファイルのパスを取得する

以下のコードはファイルがドラッグアンドドロップされたときにファイルの拡張子が.avifであるものを集めて自作メソッドのConvertAvifFilesに渡しています。

Seleniumでファイルのスクリーンショットを取って保存する

Chromeに読ませるのでファイルのパスをfile:///形式に変換します。そのあとdriver.Navigate().GoToUrlメソッドで表示させてスクリーンショットを取ります。拡張子を変更したファイルパスを生成してこれでスクリーンショットをファイルとして保存します。

–headlessを指定することでブラウザそのものを表示させなくすることができます。またHideCommandPromptWindow = trueとすることで動作時に表示されるコンソールウィンドウも非表示にできます。これだと処理がおこなわれているのかわからなくなるので、処理が完了したときはメッセージボックスを表示させています。