You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discord stickers and emoji: static PNG and animated APNG 320×320
for stickers, PNG and GIF 128×128 for emoji. APNG keeps full 8-bit
semi-transparency, so soft edges don't turn into a fringe.
Twitch emotes: PNG and GIF, single size or a 28/56/112 set.
Telegram stickers and emoji to the official spec: static PNG/WEBP,
video WEBM/VP9 up to 3 seconds and 256 KB.
Audio: extract the track to MP3, M4A (AAC) or WAV, pick the bitrate,
"remove audio" toggle. Trimming works for audio too.
APNG as an output format: unlike GIF, it keeps all colours and
semi-transparency.
English interface, switched on the fly — the queue, settings and
selected preset are kept.
Quality slider (1–100) and a "fit into size" mode: the bitrate is
chosen to hit the given number of megabytes.
Rotation by 90/180/270° and flipping, including on top of platform presets.
Checkboxes in the queue: only checked files are processed.
Trimming is set by start and end rather than start and length.
CSV report, remaining time estimate, a notification when the window
is minimised.
A log file and an error window instead of crashing silently.
Changed
Animated WEBP, AVIF and APNG are detected by file contents, not by
extension: 7TV and BetterTTV emotes convert just like video, keeping
the original speed and semi-transparency.
The intermediate format for animation is MOV with the qtrle codec
instead of GIF: GIF has 1-bit alpha, and semi-transparent edges turned
into a ragged fringe. Measured: via GIF 2 % of semi-transparent pixels
survived, via qtrle — 52 %.
Thumbnails and file durations are computed in the background. Adding
a folder of 200 photos: 7.14 s before, 0.16 s now.
The queue is processed in parallel: images in four threads, video
in two — FFmpeg already uses all cores.
The build moved from --onefile to --onedir: the exe no longer unpacks
itself into a temp folder on every start, so it starts faster and
triggers fewer antivirus false positives.
All processing options are on one tab; the selected format is not
reset when switching tabs.
Quality and "fit into size" are shown only where they work: JPG, WEBP,
AVIF and video. PNG, BMP, GIF, APNG and audio have nothing to tune,
and these fields used to silently do nothing there.
Fixed
The source file is never overwritten by the result — even with
overwriting on and the same folder. An animated WEBP used to
overwrite itself.
The format list lost the JPG item after a language switch if a
platform preset was selected.
A language switch lost a multi-file selection and a chosen but not yet
applied format: "Apply to all" used the old one.
Frame export of two files with the same name from different folders
wrote into one folder, overwriting each other.
An interrupted file stayed in the "Processing" state forever with
a frozen percentage.
Thumbnails are prepared as QImage: QPixmap is a paint device, and Qt
does not promise it works outside the GUI thread.
The queue worker got an owner: the thread object could be destroyed
while the thread was still running.
Cyrillic file names no longer break conversion.
Что нового
Добавлено
Стикеры и эмодзи Discord: статичный PNG и анимированный APNG 320×320
для стикеров, PNG и GIF 128×128 для эмодзи. У APNG полноценная 8-битная
полупрозрачность, поэтому мягкие края не превращаются в кайму.
Смайлики Twitch: PNG и GIF, поштучно и комплектом 28/56/112.
Стикеры и эмодзи Telegram по официальной спецификации: статика
PNG/WEBP, видео WEBM/VP9 до 3 секунд и 256 КБ.
Звук: извлечение дорожки в MP3, M4A (AAC) и WAV, выбор битрейта,
тумблер «убрать звук». Обрезка по времени работает и для звука.
APNG как выходной формат: в отличие от GIF, сохраняет все цвета
и полупрозрачность.
Английский язык интерфейса, переключается на лету — очередь,
настройки и выбранный пресет при этом сохраняются.
Ползунок качества (1–100) и режим «уложить в размер»: битрейт
подбирается под заданное число мегабайт.
Поворот на 90/180/270° и отражение, в том числе поверх пресетов площадок.
Галочки в очереди: обрабатываются только отмеченные файлы.
Обрезка по времени задаётся началом и концом, а не началом и длиной.
Отчёт о выполнении в CSV, оценка оставшегося времени, уведомление,
когда окно свёрнуто.
Журнал работы и окно с текстом ошибки вместо молчаливого падения.
Изменено
Анимированные WEBP, AVIF и APNG распознаются по содержимому файла,
а не по расширению: эмодзи с 7TV и BetterTTV конвертируются наравне
с видео, с сохранением исходной скорости и полупрозрачности.
Промежуточный формат для анимации — MOV с кодеком qtrle вместо GIF:
у GIF альфа однобитная, и полупрозрачные края превращались в рваную кайму.
Замерено: через GIF полупрозрачных пикселей оставалось 2 %, через qtrle — 52 %.
Миниатюры и длительность файлов считаются в фоне. Добавление папки
на 200 снимков: было 7,14 секунды, стало 0,16.
Очередь обрабатывается параллельно: картинки в четыре потока, видео
в два — FFmpeg и так занимает все ядра.
Сборка перешла с --onefile на --onedir: exe больше не распаковывает
себя во временную папку при каждом запуске, отсюда быстрый старт
и меньше ложных срабатываний антивирусов.
Все параметры обработки собраны на одной вкладке; выбранный формат
не сбрасывается при переходе между вкладками.
Качество и «уложить в размер» показываются только там, где работают:
у JPG, WEBP, AVIF и видео. У PNG, BMP, GIF, APNG и звука подкручивать
нечего, и раньше эти поля молча ничего не делали.
Исправлено
Исходный файл больше никогда не перезаписывается результатом — даже при
включённой перезаписи и совпадении папок. Анимированный WEBP до этого
затирал сам себя.
Список форматов терял пункт JPG при смене языка, если был выбран пресет
площадки.
Смена языка теряла выделение нескольких файлов и выбранный, но ещё
не применённый формат: «Применить ко всем» срабатывало со старым.
Покадровый разбор двух одноимённых файлов из разных папок писал кадры
в одну папку, затирая предыдущие.
Прерванный файл навсегда оставался в состоянии «Обработка» с зависшим
процентом.
Миниатюры готовятся как QImage: QPixmap — устройство отрисовки, и Qt
не обещает, что оно работает вне потока интерфейса.
Обработчик очереди получил владельца: объект потока мог уничтожиться,
пока поток ещё выполнялся.
Кириллица в именах файлов больше не роняет конвертацию.