Не так давно в общей папке образовалась добротная коллекция изображений формата webp, которые для всеобщего счастья необходимо было превратить в jpg. Знания заклинаний и азов алхимии для таких чудес не потребовалось, а вот ещё один ps1-скрипт в копилку сайта всё-таки упал.
Для работы с форматом webp есть отличная библиотека libwebp. В её состав входит целая куча утилит, но конкретно для конвертации в jpg нам потребуется только утилита dwebp.exe.
В моём случае, никаких проблем с открытием формата webp не наблюдалось, но если возникнут какие-то сложности — установите кодек (репозиторий здесь).
Чтобы не тратить время на путешествия по сайту разработчиков и ручное скачивание программы, я описал всю эту рутину прямо в скрипте:
# Заголовок скрипта #
[System.Console]::Title = "WEBP2JPG"
# Установка протокола #
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Импорт модуля в сессию скрипта #
Import-Module -Name BitsTransfer -Force
# Переменные #
$liblink = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-windows-x64.zip"
$zipname = "libwebp.zip"
$libname = "dwebp.exe"
$imgdir = "$PSScriptRoot\jpg"
$testpath = Test-Path -Path $libname -PathType Leaf
# Скачивание файла dwebp из библиотеки libwebp #
if (!$testpath)
{
Start-BitsTransfer -Source $liblink -Destination $zipname
Expand-Archive -Path $zipname -DestinationPath $PSScriptRoot -Force
Get-ChildItem -Path $PSScriptRoot -Recurse -Filter $libname | Move-Item -Destination "$PSScriptRoot\$libname"
Remove-Item -Path *lib* -Recurse -Force
}
# Создание папки для файлов jpg #
New-Item -Path $imgdir -ItemType Directory -Force -ErrorAction Ignore | Out-Null
# Конвертация webp в jpg #
$images = Get-ChildItem -Path $PSScriptRoot -Filter "*.webp"
foreach ($image in $images)
{
$filename = $imgdir + "\" + $image.BaseName + ".jpg"
Start-Process -FilePath $libname -ArgumentList "-quiet $image -o $filename" -NoNewWindow
}
Всё, что вам нужно сделать, это разместить файлы webp в папке со скриптом и запустить его. PS1 автоматически скачает утилиту, создаст папку для файлов jpg и проведет конвертацию. Конечно, если dwebp.exe будет обнаружен в папке, то ничего скачивать не потребуется, и преобразование начнется сразу. Однако стоит учесть, что dwebp.exe не поддерживает пути с пробелами.
На момент написания скрипта последней версии кодека являлась указанная 1.3.2. На данный момент в репозитории доступна версия 1.4.0. Можете внести соответствующие изменения в переменную $liblink. Ну, или оставить всё как есть.