IPB

Добро пожаловать, гость ( Вход | Регистрация )

2 Страниц V < 1 2  
Reply to this topicStart new topic
> 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.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 1 2016, 19:51
Сообщение #22


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Во! Спасибо! Годные штуки - действительно, лучше 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" не умеет дату у файла сохранять, но это я могу внешней программой сделать.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Grom PE
May 1 2016, 22:42
Сообщение #23


Advanced Member
***

Группа: CTPAX-X
Сообщений: 84
Регистрация: 7-February 08
Из: i@grompe.org.ru
Пользователь №: 3,120
Спасибо сказали: 95 раз(а)



QUOTE(-=CHE@TER=- @ May 2 2016, 03:51) *
Единственная проблема, которую обнаружил с "advzip.exe" - даты без учёта часового пояса почему-то сохраняются.

Действительно. Предлагаю три варианта:
1. Создавать архив без сжатия, а этой утилитой пережимать;
2. Поменять в исходниках в zip.cc time2zip() вызов gmtime на localtime и скомпилировать;
3. Пропатчить вызов gmtime на localtime в бинарнике (он там третий по счёту, 0xB701: 7B → 2B).


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 2 2016, 14:13
Сообщение #24


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Во! Третий вариант - это то что нужно! Спасибо большое!
А пережимать ей всё равно иногда придётся, потому что она каталоги сжимать не умеет.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 15 2022, 19:07
Сообщение #25


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



QUOTE(Grom PE @ May 1 2016, 22:42) *
Действительно. Предлагаю три варианта:
1. Создавать архив без сжатия, а этой утилитой пережимать;
2. Поменять в исходниках в zip.cc time2zip() вызов gmtime на localtime и скомпилировать;
3. Пропатчить вызов gmtime на localtime в бинарнике (он там третий по счёту, 0xB701: 7B → 2B).
Надо же, оказывается 6 лет уже не обновлял эти программы.
Я использую вариант №1, но на случай, если кому-то понадобится вариант №3, то для последней версии advancecomp программы advzip.exe v2.3 (2022.04.15) смещение будет такое: 0x6BAC: 98 → A0.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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 - кому-то удалось сделать батник что бы по драг и дропу просто он разжимался и снова перепаковывался? Все что смотрел - полу костыли с зависимостями от версии движка я так еще понял.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Aug 10 2022, 10:13
Сообщение #27


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Приветствую и спасибо за сообщение!
Я в последнее время кроме .ZIP/.PNG/.JPG мало что оптимизирую.
Из последних оптимизаторов, которые пробовал, был FLACOUT (чисто ради интереса - у меня и .FLAC файлов-то почти нет).

QUOTE(necros2k7 @ Aug 10 2022, 03:19) *
Ах да EXE DLL OCX SCR идут в UPX (но опять же надо тестить каждый файл)
Сжатие UPX обсуждали в этой теме. Я сейчас иничего не жму им. Потому что, во-первых, проблемы с некоторыми антивирусами, во-вторых, в последнем сообщении той темы правильно написано, что со сжатыми файлами не работает FileMapping - сжатый файл жрёт оперативной памяти во время работы больше, чем не сжатый, в-третьих, если в программе захочется что-то поменять (см. эту тему), то её всё равно придётся распаковывать и так далее.
Сразу хочу заметить, что я против всякого шлака в файлах - тут вопрос больше в балансе. Вот, например, в 3D Mark каких-то последних версий, для которых мы распаковщик делали, вместо того чтобы записать размер файла как 4 байта целое, его побайтно записывали с индикацией по первому биту (если память не изменяет). Проблем и головняка при работе с такими данными (когда их все нужно прочитать, чтобы понять какой там размер поля) - выше крыши. А экономии - 1-2 килобайта, на несколько гигабайт файла-архива. Иными словами - ну его нафиг, такая экономия, которая создаёт столько проблем, при минимальном выигрыше - не стоит оно того.

QUOTE(necros2k7 @ Aug 10 2022, 03:19) *
MP4 - интересное наблюдение - преобразовываем в MKV > File optimizer - размер меньше)
Лет 10 назад в .MKV принудительно сжатие добавили, что, ИМХО, глупость ужасная, потому что видео и звук и так сжаты, а сжатие субтитров, шрифтов и других данных на общий размер всего файла практически не влияет. Как результат куча проигрывателей (особенно аппаратных и прошивку которых нельзя заменить обновлением) перестало такие файлы открывать. И это я ещё молчу про то, что проигрывание таких видеофайлов стало сильнее нагружать процессор: помимо декодирования видео и звука необходимо ещё и ненужное сжатие распаковывать. Приходится старой версией MKVToolnix пересохранять файлы без сжатия. Возможно, там индексная таблица сжимается или ещё что, поэтому меньше получается. Плюс, насколько я знаю, .MKV поддерживает декодирование, когда текущий кадр распаковывается не на основе предыдущего (back-frame), а на основе кадра где-то в будущем (forward-frame) - вроде бы, эту штуку только .MKV из видеоконтейнеров поддерживает (правда она нагружает процессор сильнее - на слабых компьютерах особенно заметно).
А вот с .MP4 интереснее. Взял музыку (только звук) из видео на YouTube в чистом .AAC формате. Переделал в .M4A (это .MP4, где только звук - для MP3 плеера) при помощи программы MP4Box и размер уменьшился! При это сам .MP4 формат весьма толстый, плюс там индексная таблица добавилась, в отличие от .AAC, где, как и в .MP3, только фреймы звука. Сделал вывод, что, возможно, при сохранении в .MP4 ищутся одинаковые фреймы и на них в таблице смещение указывается - т.е. второй раз они в файл не попадают. За счёт этого, наверное, размер и уменьшается.

QUOTE(necros2k7 @ Aug 10 2022, 03:19) *
В свою очередь есть вопрос - на гитхабе есть проекты по перепаковке PAK от UE4 - кому-то удалось сделать батник что бы по драг и дропу просто он разжимался и снова перепаковывался?
Я не особо интересуюсь UE4 и современными играми/программами (у меня до сих пор Windows XP), так что вряд ли тут чем-то помочь смогу.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
necros2k7
Aug 10 2022, 13:09
Сообщение #28


Newbie
*

Группа: Authorized
Сообщений: 9
Регистрация: 8-August 22
Пользователь №: 18,035
Спасибо сказали: 1 раз(а)



Посмотри File optimizer внутри много программ по теме, еще PDF оптимизация тоже не паханое поле) Причем зависит оптимизация видимо от содержимого в PDF потому как иногда размер меньше выходит в File optimizer а иногда и при ручной оптимизации с cpdf
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Siberian GRemlin
Aug 10 2022, 13:30
Сообщение #29


Advanced Member
***

Группа: CTPAX-X
Сообщений: 533
Регистрация: 4-February 08
Пользователь №: 2
Спасибо сказали: 221 раз(а)



StripReloc.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Aug 10 2022, 20:08
Сообщение #30


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



QUOTE(necros2k7 @ Aug 10 2022, 13:09) *
Посмотри File optimizer внутри много программ по теме, еще PDF оптимизация тоже не паханое поле) Причем зависит оптимизация видимо от содержимого в PDF потому как иногда размер меньше выходит в File optimizer а иногда и при ручной оптимизации с cpdf
Нашего казначея, товарища kampaster'а, бы сюда. Он как раз всякой оптимизацией и пережатием занимается. Увы, он сейчас загружен сильно, даже на почту редко отвечает.

QUOTE(Siberian GRemlin @ Aug 10 2022, 13:30) *
У нас даже тема по этой программе есть аж с 2007 года вот тут. (*улыбается*) Хотя понимаю, что за это время все всё опять забыли (как и с MP3). Наш форум за 16 лет существования - просто кладезь мудрости. Главное знать где что лежит. (*улыбается*)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Aug 23 2022, 17:42
Сообщение #32


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,353
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Как я вижу тут нужно строчку на 2 символа увеличить (обе "6" на "31"). Если у строки есть выравнивание, то можно просто увеличить строку в любом hex-редакторе. Но это нужно исполняемый файл смотреть, чтобы понять есть там выравнивание или нет.
А ещё можно сделать совсем хитро.

Вариант 1.
Как я понимаю, "ect" - это имя утилиты. Тогда её можно переименовать, чтобы строка занимала столько же по размеру:
CODE
original (оригинал):
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
Затем переименовываем "ect.exe" в "z.exe".

Вариант 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 - это шестой аргумент (как я понимаю, имя файла записывается в конец, после всех аргументов).
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

2 Страниц V < 1 2
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 28th March 2024 - 20:30