Конвертиране към WebP от контекстното меню на Windows 11
Интеграция на cwebp (libwebp) в контекстното меню на Windows 11 чрез WSL.
Зависимости
WSL (Ubuntu)libwebp-devWindows Registry Editor Употреба
1. Преместете скрипта в C:\
2. Стартирайте .reg файла
3. Кликнете с десен бутон върху изображение -> Покажи още опции -> Конвертирай в WebP (1200px)
Като разработчик и уеб администратор често ми се налага да обработвам десетки изображения, преди да ги кача онлайн. Форматът WebP отдавна е стандарт за уеб поради невероятното си съотношение между минимален размер и отлично качество. Отварянето на тежък графичен софтуер (като Photoshop или PhotoScape) само за елементарно преоразмеряване и конвертиране обаче винаги ми се е струвало като загуба на време.
Вместо това реших да комбинирам най-доброто от двата свята: бързината на нискоуровневите Linux инструменти и удобството на графичния интерфейс на Windows 11.
В тази статия ще ви покажа как стъпка по стъпка интегрирах официалния енкодер на Google (cwebp) директно в контекстното меню (десния бутон) на Windows 11 чрез подсистемата WSL (Windows Subsystem for Linux). Резултатът е обработка на изображения за милисекунди с един клик, без маймуняци в кирилицата и със стилна системна иконка.
🏗️ Архитектура на решението
Преди да преминем към кода, нека разгледаме как точно работи тази имплементация. Процесът се състои от три свързани компонента:
- Linux среда (WSL Ubuntu): Използва оригиналния инструмент
cwebpот библиотекатаlibwebpна Google, за да извърши реалната математическа компресия и оразмеряване. - Windows Бач скрипт (
.bat): Служи като “мост”. Той приема Windows пътя до файла, транслира го автоматично към Linux синтаксис (чрезwslpath) и подава командата към WSL зад кулисите. - Регистър на Windows (
.reg): Добавя нова команда към контекстното меню на файловите разширения.jpg,.jpegи.png, асоциирайки ги с бач скрипта и визуална иконка.
🛠️ Стъпка 1: Подготовка на Linux средата (WSL)
Първата стъпка е да се уверим, че пакетът webp е наличен в нашето WSL Ubuntu разпределение. Инструментът не идва предварително инсталиран.
Отворете вашия WSL терминал и изпълнете следната стандартна процедура по обновяване и инсталация:
sudo apt update && sudo apt install -y webp
Забележка: За да проверите дали инсталацията е успешна, можете да напишете cwebp -version в Linux терминала.
📜 Стъпка 2: Създаване на Бач скрипта (Мостът)
Този скрипт обработва променливите от Windows средата, дефинира изходното име (добавяйки суфикс -1200px) и изпълнява командата в Linux без да оставя отворени излишни конзолни прозорци.
Създайте текстов файл, наименувайте го webp1200.bat и го поставете директно в корена на вашия диск C:\ (пътят трябва да бъде точно C:\webp1200.bat). Поставете следния код вътре:
@echo off
if "%~1" == "" exit
set "win_input=%~1"
set "win_output=%~dpn1-1200px.webp"
wsl bash -c "cwebp -resize 1200 0 -q 80 \"$(wslpath '%win_input%')\" -o \"$(wslpath '%win_output%')\""
Разбор на ключовите параметри в командата:
-resize 1200 0: Променя ширината на точно 1200 пиксела. Подаването на0за височина указва на енкодера да я изчисли динамично, запазвайки оригиналните пропорции (aspect ratio) на снимката.-q 80: Качество на изображението (Quality) по скалата от 0 до 100. Стойността 80 е “златната среда” за уеб, която спестява до 70-80% от теглото на файла, без видима разлика за човешкото око.$(wslpath ...): Вградена Linux команда в WSL, която конвертира Windows пътища (напр.C:\Users\...) в POSIX съвместими Linux пътища (напр./mnt/c/Users/...).
🗂️ Стъпка 3: Интеграция в десния бутон (Регистър)
За да се появи опцията в контекстното меню на Windows 11 (в секцията Show more options / Покажи още опции), трябва да модифицираме системния регистър.
⚠️ ВАЖНО за кодирането (Предотвратяване на “маймуняци”):
За да се показва текстът правилно на кирилица, файлът трябва задължително да бъде записан с кодиране UTF-16 LE (в някои версии на Notepad се изписва просто като Unicode). Ако го запишете в стандартен UTF-8, Windows Registry Editor няма да разчете кирилските символи и ще ги визуализира като йероглифи.
Отворете Notepad, копирайте долния код и го запишете като aktivira_ikonka.reg с кодиране UTF-16 LE:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg\Shell\ConvertToWebP1200]
@="Конвертирай в WebP (1200px)"
"Icon"="shell32.dll,-306"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg\Shell\ConvertToWebP1200\command]
@="\"C:\\webp1200.bat\" \"%1\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.jpeg\Shell\ConvertToWebP1200]
@="Конвертирай в WebP (1200px)"
"Icon"="shell32.dll,-306"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.jpeg\Shell\ConvertToWebP1200\command]
@="\"C:\\webp1200.bat\" \"%1\""
[HKEY_CLASSES_ROOT\SystemFileAssociations\.png\Shell\ConvertToWebP1200]
@="Конвертирай в WebP (1200px)"
"Icon"="shell32.dll,-306"
[HKEY_CLASSES_ROOT\SystemFileAssociations\.png\Shell\ConvertToWebP1200\command]
@="\"C:\\webp1200.bat\" \"%1\""
Стойността "Icon"="shell32.dll,-306" извиква модерната, нативна за Windows 11 иконка на изображение с четка, което придава завършен и изчистен професионален вид на контекстното меню.
След като запишете файла, кликнете два пъти върху него, потвърдете системното предупреждение и промените ще влязат в сила веднага, без нужда от рестарт.
🧼 Стъпка 4: Скрипт за пълно премахване (Rollback)
Като професионалисти винаги трябва да мислим за чистата поддръжка на операционната система. Ако решите да премахнете тази интеграция, създайте файл iztrii_menu.reg (отново записан в UTF-16 LE) със следното съдържание:
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg\Shell\ConvertToWebP1200]
[-HKEY_CLASSES_ROOT\SystemFileAssociations\.jpeg\Shell\ConvertToWebP1200]
[-HKEY_CLASSES_ROOT\SystemFileAssociations\.png\Shell\ConvertToWebP1200]
Стартирането на този файл ще изтрие създадените ключове от системния регистър мигновено, без да оставя никакви следи.
🚀 Допълнителни мощни команди и алтернативи
Освен индивидуалната обработка с десен бутон, същата конфигурация ни отваря вратите за масова автоматизация. Ето как използвам същите инструменти за по-сложни уеб задачи директно през WSL терминала:
1. Масово конвертиране и оразмеряване на цяла папка
Ако имате папка с 200 снимки, отворете терминала, позиционирайте се в нея (напр. cd /mnt/c/Users/Име/Desktop/Folder) и изпълнете този Bash цикъл:
for f in *.jpg *.jpeg *.png; do [ -e "$f" ] && cwebp -resize 1200 0 -q 80 "$f" -o "${f%.*}-1200px.webp"; done
Скриптът проверява за съществуването на файловете ([ -e "$f" ]) и ги обработва накуп за секунди.
2. Беззагубна компресия (Lossless) за лога и скрийншотове
Когато се обработват графики с прозрачен фон (PNG) или векторни лога, където размазването е недопустимо, се използва опцията -lossless:
cwebp -lossless input.png -o output.webp
3. Автоматизирано добавяне на текст върху изображение (ImageMagick)
Вместо ръчно писане на текст във PhotoScape, Linux ни позволява да отпечатаме воден знак или текст в определен регион. Първо инсталираме инструмента във WSL:
sudo apt install -y imagemagick
След това можем да позиционираме автоматично бял текст с черен контур (за видимост на всякакъв фон) в долния десен ъгъл (SouthEast) на изображението:
magick input.jpg -font Arial -pointsize 36 -fill white -stroke black -strokewidth 1 -gravity SouthEast -annotate +20+20 "Авторско право 2026" output.jpg
🎯 Заключение
С внедряването на това решение ежедневната ми работа се улесни значително. Вече няма нужда от импортиране, излишни кликове по менюта на графични програми и досадно преименуване. Всичко, което се изисква, е десен бутон върху файла и избор на командата. Интеграцията демонстрира колко гъвкава среда е Windows 11, когато се комбинира правилно с ядрото на Linux (WSL).