Добро пожаловать, гость ( Вход | Регистрация )
| -=CHE@TER=- |
Oct 13 2007, 09:50
Сообщение
#1
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
QUOTE Скачать программу: >>>JPGStrip<<< Кто уже читал мой обзор вот тут, наверняка заметил, что я не очень доволен ситуацией сложившейся с JPG стрипперами. Так что я написал свой, что называется, from scratch (с нуля). Вот оно: QUOTE АХТУНГ! Программа на стадии тестирования - так что, на всякий пожарный, делайте резервные копии ваших .JPG файлов! Вас предупредили. Последняя версия лежит на сайте в CTPAX-X Soft. История изменений Предложения по программе (этакий to-do): 1) Не записывать в выходной файл дублирующиеся секции? 2) Оставлять Exif информацию (прога удаляет весь мусор, кроме Exif). Объясню общий алгоритм работы программы. Значит так: JPG файл состоит из блоков, каждый из которых начинается на FF (255). Общая структура, такова: FFD8 FFxxSZ... FFxxSZ... FFDASZ... FFD9 ВСЕ блоки, кроме FFD8 (сигнатура JPEG) и FFD9 (маркер конца файла) имеют поле SZ - размер этой самой структуры (в Big Endian, так что его нужно разворачивать, что и делается). xx - это некий номер, определяющий, что за данные находятся в этом блоке. Алгоритм моей программы тупой как бревно - читаются эти блоки, из них читается байт xx и сравнивается с массивом разрешённых байтов (см. константу JPEGAllowBlocks) - если этого байта там нет - значит это какой-нибудь thumbnail или ещё какая-нибудь хрень, так что мы её пропускаем и не записываем в выходной файл. |
![]() ![]() |
| -=CHE@TER=- |
Mar 27 2008, 13:36
Сообщение
#2
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
Обновил первый пост - JPGStrip 0.25:
QUOTE Version: 0.24 -> 0.25 (2008.03.27) --------------------- -=CHE@TER=- * Filename doesn't output if file is already optimized -=CHE@TER=- * Don't write to disk anything if nothing is stripped - a bit faster work -=CHE@TER=- * Better support for .BAK: they won't created if nothing is stripped -=CHE@TER=- * "File Access/Modification/Create Time" always restore for all files (only if BTNoDatetime not specified), because file always readed for JPEG signature which dropped "File Access Time" property Блин, чертовски удобную штуку мы сделали. JPGStripper от SteelBytes я уже выкинул, а также вытер с винта и реестра всё то, что оно нагадило. (*улыбается*) Чего ещё изменил: 1. Дату у каждой версии в истории 2. Все изменения пометил как {* 0.25 *}, чтобы можно было в случае чего знать, где искать ошибку, да и просто ориентироваться что и когда меняли 3. Файл читается в память, апосля этого в массив из 100 элементов (взял с большим запасом) заносится смещение и размер секций, которые нельзя стрипать. После этого подсчитывается размер этих секций - если он, в сумме, оказался меньше размера файла - только тогда создаётся .BAK файл, а файл перезаписывается. Всё гениальное - просто. (*улыбается*) Насчёт To Do: QUOTE - show error if no files given Не совсем понял про что тут речь - объясните, кто добавил, или уберите из to do. А вот что реально нужно добавить: QUOTE - skip duplicate FF blocks (for damaged files) У меня пару лет назад рухнул винт. Восстанавливал когда с него файлы - восстановил сайт какой-то по Silent Hill 2. У картинок почему-то дублировался JFIF заголовок. Вот примеры:dupjpghdr.zip (102 533 байта) Может в массив, который у меня сейчас используется для секций (Sect[]) добавить поле - номер секции с проверкой: дублирующиеся секции не добавлять? Спасибо сказали:
|
-=CHE@TER=- JPGStrip Oct 13 2007, 09:50
Grom PE Сравнение ujpg и JPGStrip:
Я взял 3563 картинки J... Oct 14 2007, 00:04
-=CHE@TER=- О! Спасибо за тест!
(3) обе программы опт... Oct 14 2007, 09:35
Grom PE Мои эксперименты показали, что замена двух байтов ... Oct 16 2007, 08:02
-=CHE@TER=- Хотя, может, это и правильно — пытаться дост... Oct 17 2007, 05:09
Alex -=CHE@TER=- а графический вариант уже есть? :)
Про... Oct 20 2007, 12:55
-=CHE@TER=- -=CHE@TER=- а графический вариант уже есть? :)В см... Oct 23 2007, 09:08
Alex Ну всмысле что бы не надо было прописывать всякую.... Oct 23 2007, 14:03
-=CHE@TER=- Ну всмысле что бы не надо было прописывать всякую.... Oct 23 2007, 17:28
Alex А что там уметь?!))) Просто не очень люблю кон... Oct 23 2007, 20:38
-=CHE@TER=- Так, программу выложил (см. первый пост) и изменил... Oct 24 2007, 11:17
jTommy Потестировал немного. Все что нашел у себя на хард... Dec 1 2007, 14:21
-=CHE@TER=- jTommy!
Большое спасибо за тестирование и заме... Dec 1 2007, 16:00
Grom PE
Ещё заменил копирайт [b]Grom PE / -=CHE@TER=- на ... Dec 1 2007, 16:36
jTommy Оказывается битых файлов было не 4 а около 15 (я и... Dec 1 2007, 16:44
-=CHE@TER=- Все правильно, я же теперь в команде.
P.S. Кажетс... Dec 2 2007, 05:42
jTommy 1) Косяк с .BAK файлами - если переименовывать, то... Dec 2 2007, 08:07
-=CHE@TER=- Пофиксил работу с повторной обработкой - сначала д... Jan 21 2008, 07:57
Grom PE -=CHE@TER=-
Как сохраняет в CMYK JPEG Corel Photo-... Jan 21 2008, 09:55
-=CHE@TER=- Нашёл, наверное хрестоматийный, пример безнадёжно ... Nov 15 2008, 09:47
Grom PE ICC-Profile?..
Надо, всё-таки, прикрутить его подд... Nov 18 2008, 16:35
-=CHE@TER=- А что там прикручивать? Раскомментировать $EE... Nov 18 2008, 16:44
Grom PE Проблема в том, что у некоторых не CMYK картинок э... Nov 18 2008, 17:53
-=CHE@TER=- Хотелось бы пример такой картинки.Да запросто - бе... Nov 19 2008, 12:33
-=CHE@TER=- JPGStrip 0.26
Прикручена поддержка CMYK и арифмети... Dec 4 2008, 19:42
-=CHE@TER=- На сайте в новостях есть, но тут более подробно на... Feb 27 2011, 10:40![]() ![]() |
| Упрощённая версия | Сейчас: 2nd December 2025 - 01:40 |