![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Предлагаю в данной теме рассказывать о программах, которые помогут уменьшить размер тех или иных файлов.
1) Архиваторы не предлагать. 2) Все программы Freeware. 3) Все преобразования должны быть lossless (т.е. без потери качества, когда сами данные не трогаются оставаясь как есть). --- Первый буду: Значится сравнивались следующие программы для удаления всего лишнего с .JPG файлов - UJPG (by dwing) (1) по сравнению с JPG/PNG Stripper (by SteelBytes) (2): + снимает ещё и 'JFIF'-блок, что слегка уменьшает размер + может снимать thumb'наилы и прочий хлам ещё и с фотографий от сотового телефона, чего (2) делать почему-то не умеет + гораздо меньше занимает + не гадит в реестре и на диске в отличие от (2), который помимо реестра гадит ещё, оказывается, и в %USERPROFILE%\Application Data\SteelBytes\ - не умеет рекурсивно обходить каталог и все подкаталоги, разыскивая там JPEG файлы и обрабатывая их - не ведёт статистику сколько байт удалось съэкономить - (2), например, делает это очень подробно: сколько всего снято и в среднем (ещё выводит для каждого файла, сколько с него удалось снять и снято ли вообще, а (1) даже на уже почищенный файл, всё-равно выдаёт "OK!" даже ничего с него не сняв) - не сохраняет дату модификации у файла после его изменения - ну, (2) ещё умеет и с .PNG файлов снимать информацию лишнюю, но т.к. тут речь идёт только о .JPG, то это, на мой взгляд, не такой уж и большой минус В общем, после написания этого обзора, стало понятно, что нужно писать свой JPEGStrip не страдающий этими косяками, что и было проделано: Что делает: снимает с .JPG (.JPEG, .JPE) файлов комментарии и информацию добавляемую туда всякими программами (PhotoShop, ACDSee (по-моему с версии 4.0) и т.д; между прочим замечу, что XNView ничего никогда в изображения "левого" не пихает). Небольшие файлы, после обработки этой программой, могут похудеть в два и более (!) раза. Это очень хорошо, если выкладываете какие-нибудь скриншоты в Интернет - трафика меньше жрётся. Очень удобная программа - при обработке многих файлов, выводит напротив каждого (если он был обработан) сколько байт с него снято и суммарную информацию по всем файлам - сколько было обработано, сколько всего удалось съэкономить. Программа работает в консольном режиме - это когда вы набираете где-нибудь в FAR'е: jpgstrip *.jpg или jpgstrip image1.jpg или jpgstrip *.* /s (Ахтунг! Последний пример снимает со всех .JPE/.JPEG./JPG файлов информацию в текущем каталоге и ВО ВСЕХ подкаталогах текущего!) Для удобной работы с программой рекомендуется поместить её куда-нибудь в C:\WINDOWS\, чтобы была доступна через %PATH%. ВАЖНО: Если вы снимаете информацию с фотографий сделанной вашей цифровой камерой, то вы ПОТЕРЯЕТЕ ВСЕ ДАННЫЕ О МОДЕЛИ КАМЕРЫ, ДАТЕ И ВРЕМЕНИ, А ТАКЖЕ ВСЕХ НАСТРОЙКАХ ПРИ КОТОРЫХ БЫЛА СДЕЛАНА ФОТОГРАФИЯ - ОСТАНЕТСЯ ТОЛЬКО САМО ИЗОБРАЖЕНИЕ (превью тоже выкидывается)! Немного насчёт JPGStrip. Берём .JPG файл-фотографию и натравливаем на него эту программу. У меня получилось так: до - 648363 байта, после - 629012 байта. Т.е. в нашем случае разница (размер файла, а не на диске): 648363-629012=19351 байт или 18 Кб. А теперь представим, что у нас файл сам занимает 10 Кб от силы. Допустим 50x50 обложка, скажем, диска какого-нибудь на сайте. Я не говорил, что эта программа для всех файлов (любых размеров) делает в два и более раза меньше, я сказал, что только для небольших заметна разница или, добавлю, для тех, у которых много чего в заголовок понаписано. Для других файлов будет выигрышь при их количестве. Т.е. допустим у нас, в среднем, пусть не 18 Кб, а, скажем, 15 Кб с файла удаляется. Теперь представим, что у нас в Интернете сайт, с собственной галлереей, где мы разместили превьюшки. Нехитрым подсчётом вычисляем: 1024 Кб (мегабайт) / 15 Кб = 62.2(6) - округляем до 62. Таким образом получаем, что на каждые, примерно, полсотни картинок (неважно какого размера, хоть 2 на 2 писеля), мы экономим метр трафика. Это при том - что 15 Кб, как видно - не предел (в нашем случае - если это фотография, то всегда будет одинаковый размер информации - 18Кб). Чудес не бывает. (*улыбается*) И .JPG файл не сжать в килобайт не потеряв при этом качество. Может показаться немного маразматично так страдать из-за какого-то метра, но гора песка состоит из ма-а-аленьких песчинок. В конце концов всё просто: не хотите - не пользуйтесь. (*улыбается*) Раз уж начал писать офф-топ, то хочется сказать, что во многих играх и программах, любят всякие разности пихать в файлы, и получается, что тут немного + тут немного + тут немного = ого-го! Я считаю, что в программе, а уж тем более мультимедиа файлах не должно быть ничего лишнего. |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Для начала о смешном (взято отсюда):
QUOTE Re: Unwanted resources in EXE and DLL Рыдал над этим Jean'ом. Он думает, что убрав PACKAGEINFO и DVCLAL он сможет избежать того, чтобы его программу взломали. "Какие мы наивные!" ©Jean [Aug 17 2005, 07:36] > > What is your problem with this? The size increase is negligible. > The problem is that almost every user in Russia tries to break-up every program. The units in these resources may reveal my own secrets. С другой стороны, если мы пишем на чистом WinAPI, то мусор который в .EXE с завидным постоянством пихает компилятор Borland просто дико раздражает. Так что давайте немножко "похудеем" нашу программу. Предлагаю скачать и кинуть куда-нибудь программу ResHacker (Freeware, если что) и сделать вот такой файл dreshack.bat: CODE @echo off if _%1 == _ goto help upx.exe -d "%1" if not _%2 == _1 goto keepdvl C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", RCData,DVCLAL, :keepdvl if not _%3 == _1 goto keepstr C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", StringTable,, :keepstr C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", RCData,PACKAGEINFO, C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", Cursor,, C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", Bitmap,, C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", Dialog,, C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", CursorGroup,, upx.exe -9 --exact "%1" goto quit :help Echo Usage: %0 filename.exe [keepdvl] [keepstr] :quit После чего натравливать его на все необходимые программы: dreshack program.exe --- снять всё нафиг (если пишем на чистом WinAPI) dreshack program.exe 1 --- не трогать DVCLAL (если используем DBE) dreshack program.exe 0 1 --- не трогать StringTable (если используем Dialogs или ещё что) dreshack program.exe 1 1 --- не трогать DVCLAL и StringTable DVCLAL необходим для работы BDE и некоторых других компонент Delphi! Иначе они откажутся работать (там просто тупая проверка, но чтобы заставить такой .EXE работать придётся либо подламывать его, либо пересобирать те компоненты Delphi, которые проверяют DVCLAL). Подробнее об этом ОБЯЗАТЕЛЬНО прочитать здесь! Если удалить StringTable, и при этом пользоваться, например, юнитом Dialogs, то можно получить вместо "OK", "Cancel", "Yes", "No" и прочих, просто кнопки без текста - смотрится более чем дико. (*улыбается*) Если Dialogs и другие, подобные, юниты не используются - StringTable можно смело херить. ОБРАЩАЮ ВАШЕ ВНИМАНИЕ НА ТО, ЧТО СТРОЧКИ: CODE C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", Cursor,, ЦЕЛИКОМ ХЕРЯТ ВСЕ РЕСУРЫ! Т.е. если вы используете курсоры, картинки или ещё что-нибудь, то херьте только то, что суёт туда Borland (можно посмотреть номера ресурсов в том же ResHacker'е)! Иначе схерются также и ваши ресурсы!C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", Bitmap,, C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", Dialog,, C:\ResourceHacker\ResHacker.exe -delete "%1", "%1", CursorGroup,, |
![]() ![]() |
Упрощённая версия | Сейчас: 30th April 2025 - 18:57 |