nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

Встречайте: PNGRepack! (альфа-версия)

Первая программа из арсенала ScanCombine, назначение которой - в пакетном режиме пережать файлы PNG, BMP и TIFF без потери информации, но с уменьшением занимаемого объема.

PNGRepackRocks.png

Сегодня обкатывал её на своём архиве сырых и обработанных сканов, результаты можете увидеть в строке состояния на скриншоте: из тех 25 гигабайт, что программа успела обработать, она умудрилась выкинуть почти 6 гигабайт, или 23%. Это "средняя температура по больнице", степень сжатия очень зависит от того, насколько хорошо файл был ужат при сохранении.


Выходные файлы TIFF от ScanTailor'а ужимаются в среднем вдвое, а иногда и больше. Сырые сканы в PNG, сделанные в IrFanView, жмутся очень хорошо - от 20 до 50%, а вот программа BookPavilion, прилагающаяся к моему книжному сканеру, ужимает очень неплохо - после нее удается выдавить лишь еще 0.5..2% места.

Не нужно бояться, что программа взглючит и безвозвратно испортит какое-то изображение: сохранение производится во временный файл с тем же именем, но с расширением png0, и только после того, как он будет успешно сохранён, старый файл удалится, а новый переименуется. Т.е нет такого момента, чтобы картинка "висела" лишь в оперативной памяти. В процессе отладки я ни одного файла не потерял, хотя в любом случае иметь резервную копию где-нибудь не помешает - жесткий диск тоже может "гавкнуться" однажды.

Надеюсь, интерфейс в пояснениях не нуждается - выбираем папку с файлами, которые хотим пережать, ставим галочки, число потоков выставляем по числу ядер процессора, приоритет я обычно оставляю на Idle, чтобы можно было еще на этом компьютере работать, и вперед! Приоритет и число потоков можно менять на ходу, но программа реагирует медленно - она старается сейчас не вмешивается в жизнь потоков и меняет их настройки только когда очередной файл пережался.

Если нажать на крестик, программа не закроется, пока каждый поток не сохранит по одному файлу. С кнопкой стоп логика сейчас долбанутая: когда программа полностью пережмет все файлы в папке, можно будет выбрать новую папку и запустить пережатие в ней. Но если мы нажмем стоп, то сколько бы мы ни выбирали новую папку, при нажатии на пуск он продолжит коварно пережимать ту, первую! Позже чуть подправлю это дело.

Программа заточена под те форматы пикселей, которые используются в сканах: RGB, градации серого 1,4,8 бит и палитры. Прозрачность и HDR (16 бит градаций серого) пока не поддерживаются, т.е данные файлы программа не тронет.

Также она "съест" далеко не все режимы TIFF: какую-нибудь там 7-битную глубину цвета или CMYK-палитру, или старый алгоритм сжатия CCITT T.6. Мой новый сканер А3 учудил - оказалось, что если выбрать ему выходной формат TIFF, он, скотина, никого не спрашивая, будет сохранять с компрессией JPEG и со схемой CMYK.

И еще возможная недоработка - если один из файлов открыть в другой программе, в тот момент когда PNGRepack захочет к нему обратиться, она не сможет получить к нему доступ, о чем напишет у себя в журнале, и примется за следующий файл. Возможно, стоило бы в таком случае попытать удачи попозже или вовсе ругнуться - "не работает, хозяина, что делать будем, еще раз попробуем или хрен с ним??". Но так, как сейчас, может, и спокойнее.

Как можно заметить, размеры файлов здесь меряются в байтах, кибибайтах, мибибайтах и т.д., от слова KiloBinary Bytes, т.е в кибибайте 1024 байта, в мибибайте 1024*1024 байта и всё в этом духе. Это дело пытались протолкнуть в качестве стандарта, но как-то оно со скрипом идёт, всё-таки звучит так себе. Я выбрал по умолчанию именно такие величины (профдеформация на почве PhysUnitCalc), но если они вас ну просто-таки бесят, можно от лишней буковки "и" избавиться, если зайти в settings.dat в папке программы (он появится после первого включения) и переправить строчку
writeKiBasKB = False на True. При этом все равно в килобайте будет 1024 байта и т.д., поскольку везде в системе оно работает именно так, и только производители жестких дисков придерживаются десятичных приставок.


Скачать программу можно отсюда: https://yadi.sk/d/BwzfvVrAnuKxE

На первых порах все-таки лучше делайте резервную копию исходных файлов, прежде чем натравливать программу. Возможно, что при преобразовании из отдельных вариантов TIFF в PNG что-то не то происходит с палитрой.
Tags: Книги, программки
Subscribe

  • Нахождение двух самых отдалённых точек

    Пока компьютер долго и упорно мучал симуляцию, я пытался написать на ассемблере алгоритм захвата на ближней дистанции. А сейчас на этом коде можно…

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Балансируем конвейер QuatCore

    В пятницу у нас всё замечательно сработало на симуляции, первые 16 миллисекунд полёт нормальный. А вот прошить весь проект на ПЛИС и попробовать "в…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 42 comments

  • Нахождение двух самых отдалённых точек

    Пока компьютер долго и упорно мучал симуляцию, я пытался написать на ассемблере алгоритм захвата на ближней дистанции. А сейчас на этом коде можно…

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Балансируем конвейер QuatCore

    В пятницу у нас всё замечательно сработало на симуляции, первые 16 миллисекунд полёт нормальный. А вот прошить весь проект на ПЛИС и попробовать "в…