Strippers, или уменьшаем размер файлов |
Добро пожаловать, гость ( Вход | Регистрация )
Strippers, или уменьшаем размер файлов |
Grom PE |
Apr 30 2016, 16:21
Сообщение
#21
|
Advanced Member Группа: CTPAX-X Сообщений: 84 Регистрация: 7-February 08 Из: i@grompe.org.ru Пользователь №: 3,120 Спасибо сказали: 95 раз(а) |
-=CHE@TER=-, если ты хочешь ещё большего уровня сжатия, чем kzip, лучше не перебирать случайные таблицы в нём, а воспользоваться алгоритмом zopfli, который сейчас лучше всех жмёт DEFLATE. Для zip утилита с этим алгоритмом называется AdvanceComp/advzip.
Спасибо сказали:
|
-=CHE@TER=- |
May 1 2016, 19:51
Сообщение
#22
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Во! Спасибо! Годные штуки - действительно, лучше Ken'овских утилит жмут.
advzip.exe -a -4 -i 20 test-1.zip test.exe advzip.exe -a -4 -i 20 test-2.zip test.exe Пот этом "test-1.zip" и "test-2.zip" будут идентичны. Ещё бы не забыть при скольких итерациях архив создавался. (*улыбается*) Единственная проблема, которую обнаружил с "advzip.exe" - даты без учёта часового пояса почему-то сохраняются. Упаковал-распаковал и +X часов от своего часового пояса потерял. Тестировал распаковку как через WinRAR, так и через unzip (GNU'шный zip) и даже официальный DOS'овский pkunzip 2.04g - везде при распаковке часы теряются. Не смертельно, но KZIP-то жал правильно. Ещё как-нибудь при упаковке показывалась бы какая сейчас итерация идёт, а то, кроме имени файла, вообще ничего нет. А ещё "advpng.exe" не умеет дату у файла сохранять, но это я могу внешней программой сделать. |
Grom PE |
May 1 2016, 22:42
Сообщение
#23
|
Advanced Member Группа: CTPAX-X Сообщений: 84 Регистрация: 7-February 08 Из: i@grompe.org.ru Пользователь №: 3,120 Спасибо сказали: 95 раз(а) |
Единственная проблема, которую обнаружил с "advzip.exe" - даты без учёта часового пояса почему-то сохраняются. Действительно. Предлагаю три варианта: 1. Создавать архив без сжатия, а этой утилитой пережимать; 2. Поменять в исходниках в zip.cc time2zip() вызов gmtime на localtime и скомпилировать; 3. Пропатчить вызов gmtime на localtime в бинарнике (он там третий по счёту, 0xB701: 7B → 2B). Спасибо сказали:
|
-=CHE@TER=- |
May 2 2016, 14:13
Сообщение
#24
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Во! Третий вариант - это то что нужно! Спасибо большое!
А пережимать ей всё равно иногда придётся, потому что она каталоги сжимать не умеет. |
-=CHE@TER=- |
May 15 2022, 19:07
Сообщение
#25
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Действительно. Предлагаю три варианта: Надо же, оказывается 6 лет уже не обновлял эти программы.1. Создавать архив без сжатия, а этой утилитой пережимать; 2. Поменять в исходниках в zip.cc time2zip() вызов gmtime на localtime и скомпилировать; 3. Пропатчить вызов gmtime на localtime в бинарнике (он там третий по счёту, 0xB701: 7B → 2B). Я использую вариант №1, но на случай, если кому-то понадобится вариант №3, то для последней версии advancecomp программы advzip.exe v2.3 (2022.04.15) смещение будет такое: 0x6BAC: 98 → A0. |
necros2k7 |
Aug 10 2022, 03:19
Сообщение
#26
|
Newbie Группа: Authorized Сообщений: 9 Регистрация: 8-August 22 Пользователь №: 18,035 Спасибо сказали: 1 раз(а) |
Приветствую! Поделюсь своими изысканиями по данной теме. Вообщем перелопачено было много чего и остановился пока на следующей подборке - основной комбайн по переработке - File optimizer от друга из солнечной Испании Nikkho) Сразу оговоримся что речь идет о практическом уменьшении обьема файлов c выбросом за борт метаданных. Т.е. соотношение скорость - размер. Есть утилиты которые оптимизируют по максималке до талого но будь готов на неделю оставить комп чтобы скажем картинок 20 в PNG утрамбовало) Так вот PNG , OGG, PDF, MP3, GIF идет в Fileoptimizer, JPG в Papa`s optimizer. Остальные форматы глубоко не копал типа JS LUA CSS - из прикладного думаю можно это встретить в ресурсах браузеров и соотв. пожать. Давно мучал Firefox но после сжатия CSS были ошибки и забросил. Вообще FO интересная штука - жаль автор не дает менять ключи запуска консольных прог в ней, ибо они не оптимизированы и есть простор для экспериментов, на все реквесты он не быстро реагирует. Пробовал вручную добавлять параметры в екзешник но видимо прога считает контрольную сумму, помню была какая-то утилита делать выравнивание вроде после изменения но не помню название ее. Ах да EXE DLL OCX SCR идут в UPX (но опять же надо тестить каждый файл) Извиняюсь если сумбурно мысли изложил. По мере восстановления памяти буду дополнять)
Papa optimizer - https://papas-best.com/optimizer_en EXIFtool тоже может резать мету - но надо тестить JPG - хотите еще больше ужать - пакуйте в PackJPG - прекрасно открывается в XnView. В моих тестах даже в JXL больше по размеру получается. PNG - после оптимизации в JXL тоже пробуйте (есессно не ресурсы игр а отдельные картинки) WAD Doom - Cleanwad > doom-crusher.bat : v2.1.1, можно потом попробовать wadExt v1.1 © 2016 Christoph Oelckers (надо тестить) MP4 - интересное наблюдение - преобразовываем в MKV > File optimizer - размер меньше) В свою очередь есть вопрос - на гитхабе есть проекты по перепаковке PAK от UE4 - кому-то удалось сделать батник что бы по драг и дропу просто он разжимался и снова перепаковывался? Все что смотрел - полу костыли с зависимостями от версии движка я так еще понял. Спасибо сказали:
|
-=CHE@TER=- |
Aug 10 2022, 10:13
Сообщение
#27
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Приветствую и спасибо за сообщение!
Я в последнее время кроме .ZIP/.PNG/.JPG мало что оптимизирую. Из последних оптимизаторов, которые пробовал, был FLACOUT (чисто ради интереса - у меня и .FLAC файлов-то почти нет). Ах да EXE DLL OCX SCR идут в UPX (но опять же надо тестить каждый файл) Сжатие UPX обсуждали в этой теме. Я сейчас иничего не жму им. Потому что, во-первых, проблемы с некоторыми антивирусами, во-вторых, в последнем сообщении той темы правильно написано, что со сжатыми файлами не работает FileMapping - сжатый файл жрёт оперативной памяти во время работы больше, чем не сжатый, в-третьих, если в программе захочется что-то поменять (см. эту тему), то её всё равно придётся распаковывать и так далее.Сразу хочу заметить, что я против всякого шлака в файлах - тут вопрос больше в балансе. Вот, например, в 3D Mark каких-то последних версий, для которых мы распаковщик делали, вместо того чтобы записать размер файла как 4 байта целое, его побайтно записывали с индикацией по первому биту (если память не изменяет). Проблем и головняка при работе с такими данными (когда их все нужно прочитать, чтобы понять какой там размер поля) - выше крыши. А экономии - 1-2 килобайта, на несколько гигабайт файла-архива. Иными словами - ну его нафиг, такая экономия, которая создаёт столько проблем, при минимальном выигрыше - не стоит оно того. MP4 - интересное наблюдение - преобразовываем в MKV > File optimizer - размер меньше) Лет 10 назад в .MKV принудительно сжатие добавили, что, ИМХО, глупость ужасная, потому что видео и звук и так сжаты, а сжатие субтитров, шрифтов и других данных на общий размер всего файла практически не влияет. Как результат куча проигрывателей (особенно аппаратных и прошивку которых нельзя заменить обновлением) перестало такие файлы открывать. И это я ещё молчу про то, что проигрывание таких видеофайлов стало сильнее нагружать процессор: помимо декодирования видео и звука необходимо ещё и ненужное сжатие распаковывать. Приходится старой версией MKVToolnix пересохранять файлы без сжатия. Возможно, там индексная таблица сжимается или ещё что, поэтому меньше получается. Плюс, насколько я знаю, .MKV поддерживает декодирование, когда текущий кадр распаковывается не на основе предыдущего (back-frame), а на основе кадра где-то в будущем (forward-frame) - вроде бы, эту штуку только .MKV из видеоконтейнеров поддерживает (правда она нагружает процессор сильнее - на слабых компьютерах особенно заметно).А вот с .MP4 интереснее. Взял музыку (только звук) из видео на YouTube в чистом .AAC формате. Переделал в .M4A (это .MP4, где только звук - для MP3 плеера) при помощи программы MP4Box и размер уменьшился! При это сам .MP4 формат весьма толстый, плюс там индексная таблица добавилась, в отличие от .AAC, где, как и в .MP3, только фреймы звука. Сделал вывод, что, возможно, при сохранении в .MP4 ищутся одинаковые фреймы и на них в таблице смещение указывается - т.е. второй раз они в файл не попадают. За счёт этого, наверное, размер и уменьшается. В свою очередь есть вопрос - на гитхабе есть проекты по перепаковке PAK от UE4 - кому-то удалось сделать батник что бы по драг и дропу просто он разжимался и снова перепаковывался? Я не особо интересуюсь UE4 и современными играми/программами (у меня до сих пор Windows XP), так что вряд ли тут чем-то помочь смогу. |
necros2k7 |
Aug 10 2022, 13:09
Сообщение
#28
|
Newbie Группа: Authorized Сообщений: 9 Регистрация: 8-August 22 Пользователь №: 18,035 Спасибо сказали: 1 раз(а) |
Посмотри File optimizer внутри много программ по теме, еще PDF оптимизация тоже не паханое поле) Причем зависит оптимизация видимо от содержимого в PDF потому как иногда размер меньше выходит в File optimizer а иногда и при ручной оптимизации с cpdf
|
Siberian GRemlin |
Aug 10 2022, 13:30
Сообщение
#29
|
Advanced Member Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) |
|
-=CHE@TER=- |
Aug 10 2022, 20:08
Сообщение
#30
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Посмотри File optimizer внутри много программ по теме, еще PDF оптимизация тоже не паханое поле) Причем зависит оптимизация видимо от содержимого в PDF потому как иногда размер меньше выходит в File optimizer а иногда и при ручной оптимизации с cpdf Нашего казначея, товарища kampaster'а, бы сюда. Он как раз всякой оптимизацией и пережатием занимается. Увы, он сейчас загружен сильно, даже на почту редко отвечает.У нас даже тема по этой программе есть аж с 2007 года вот тут. (*улыбается*) Хотя понимаю, что за это время все всё опять забыли (как и с MP3). Наш форум за 16 лет существования - просто кладезь мудрости. Главное знать где что лежит. (*улыбается*) |
necros2k7 |
Aug 23 2022, 11:44
Сообщение
#31
|
Newbie Группа: Authorized Сообщений: 9 Регистрация: 8-August 22 Пользователь №: 18,035 Спасибо сказали: 1 раз(а) |
А насколько сложно пропатчить этот File optimizer чтобы добавить туда свои флаги запуска утилитам? Так-то если exe смотреть там в открытом виде строка с флагами типа ect --strict -strip -9 --mt-file=6 --mt-deflate=6 как бы это заменить на ect --strict -strip -9 --mt-file=31 --mt-deflate=31 и чтобы прога запускалась) Это сократило бы время обработки PNG)
|
-=CHE@TER=- |
Aug 23 2022, 17:42
Сообщение
#32
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Как я вижу тут нужно строчку на 2 символа увеличить (обе "6" на "31"). Если у строки есть выравнивание, то можно просто увеличить строку в любом hex-редакторе. Но это нужно исполняемый файл смотреть, чтобы понять есть там выравнивание или нет.
А ещё можно сделать совсем хитро. Вариант 1. Как я понимаю, "ect" - это имя утилиты. Тогда её можно переименовать, чтобы строка занимала столько же по размеру: CODE original (оригинал): Затем переименовываем "ect.exe" в "z.exe".ect --strict -strip -9 --mt-file=6 --mt-deflate=6 required (что нужно): ect --strict -strip -9 --mt-file=31 --mt-deflate=31 patched (как пропатчить): z --strict -strip -9 --mt-file=31 --mt-deflate=31 Вариант 2. Так как в указанной строке у утилиты нет расширения (просто "ect", а не "ect.exe"), то можно сделать ещё проще: переименовать "ect.exe", например, в "ect2.exe", затем создать "ect.bat" такого содержания (т.к. расширение у утилиты не задано - просто "ect", то система будет искать файл подставляя расширения из списка: ".exe", ".cmd", ".bat", ".com"): CODE @ect2.exe --strict -strip -9 --mt-file=31 --mt-deflate=31 %6 %6 - это шестой аргумент (как я понимаю, имя файла записывается в конец, после всех аргументов). |
Упрощённая версия | Сейчас: 18th November 2024 - 21:26 |