Назад към каталога
Илюстрация на автоматизация: терминал, зъбчати колела и конвейер от задачи
Автоматизация ⭐ Препоръчан v1.0.0 • 4.10.2026 г. • 🐚 bash

Конвертиране към WebP от контекстното меню на Windows 11

Интеграция на cwebp (libwebp) в контекстното меню на Windows 11 чрез WSL.

Зависимости

WSL (Ubuntu)libwebp-devWindows Registry Editor

Употреба

1. Преместете скрипта в C:\ 2. Стартирайте .reg файла 3. Кликнете с десен бутон върху изображение -> Покажи още опции -> Конвертирай в WebP (1200px)
Windows 11WSL2Ubuntulibwebp

Като разработчик и уеб администратор често ми се налага да обработвам десетки изображения, преди да ги кача онлайн. Форматът WebP отдавна е стандарт за уеб поради невероятното си съотношение между минимален размер и отлично качество. Отварянето на тежък графичен софтуер (като Photoshop или PhotoScape) само за елементарно преоразмеряване и конвертиране обаче винаги ми се е струвало като загуба на време.

Вместо това реших да комбинирам най-доброто от двата свята: бързината на нискоуровневите Linux инструменти и удобството на графичния интерфейс на Windows 11.

В тази статия ще ви покажа как стъпка по стъпка интегрирах официалния енкодер на Google (cwebp) директно в контекстното меню (десния бутон) на Windows 11 чрез подсистемата WSL (Windows Subsystem for Linux). Резултатът е обработка на изображения за милисекунди с един клик, без маймуняци в кирилицата и със стилна системна иконка.


🏗️ Архитектура на решението

Преди да преминем към кода, нека разгледаме как точно работи тази имплементация. Процесът се състои от три свързани компонента:

  1. Linux среда (WSL Ubuntu): Използва оригиналния инструмент cwebp от библиотеката libwebp на Google, за да извърши реалната математическа компресия и оразмеряване.
  2. Windows Бач скрипт (.bat): Служи като “мост”. Той приема Windows пътя до файла, транслира го автоматично към Linux синтаксис (чрез wslpath) и подава командата към WSL зад кулисите.
  3. Регистър на 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).