![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
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=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
О, блин, точно. (*улыбается*) Совсем забыл. Спасибо! Заодно актулизировал информацию в связи с тем, что Extractor.ru ожил.
Оказывается битых файлов было не 4 а около 15 (я их незаметил, потому что она на них не зависла). Теперь со всеми работает правильно. Кстати, думаю, нужно разрулить ситуацию с .BAK файлами да на сайт выложить - пущай другие тоже оценят. (*улыбается*)Предлагаю еще одну опцию: Хе-хе. Как раз на exif-то больше всего инфы и стрипается.- оставлять Exif информацию (прога удаляет весь мусор, кроме Exif). Кстати, вопрос тогда: никто не знает exif - это один FF xx блок или несколько? Туда же, вроде, ещё уменьшенные превьюшки входят или это другой блок? Короче, спасибо за todo - вынес его в первый пост под номером 4. Надо обмозговать. |
jTommy |
![]()
Сообщение
#3
|
Наблюдающий ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 197 Регистрация: 4-February 08 Из: деревня Москва Пользователь №: 6 Спасибо сказали: 19 раз(а) ![]() |
1) Косяк с .BAK файлами - если переименовывать, то FindNext возвращяет новый .JPG с таким же именем, уже стрипнутый Сканируем .jpg, "не мусор" записываем в .tmp файл. Дошли до конца .jpg файла, переименовываем: .jpg -> .bak; .tmp -> .jpg. Если мусора не оказалось - ничего не делаем. Создается только один .tmp файл.2) Улучшить поддержку .BAK - чтобы .BAK файл не создавался, если ничего не стрипалось Или в два прохода: сначала сканируем, если мусор есть, тогда возвращаемся в начало .jpg и начинаем записывать в .tmp. Но так как случай, когда мусора нет вообще встречается редко (во всяком случае, в моих файлах) можно не заморачиваться с этим вариантом. 3) Что делать с изображениями с не ICC профайлом (см. ниже)? Я так понимаю, они настолько редки, что на них можно забить. ![]() Вообще надо бы GUI интерфейс сделать, но такой, чтобы он был удобным. Например слева дерево папок, справа настройки и ход процесса. На как это сделать на WinAPI?... "TTreeView" сложный контрол. На VCL не хочется - программа для уменьшения файлов, а сама весит 400кб. ![]() Можно проще: кнопочка "добавить каталог" и список каталогов, на случай если пользователь хочет сразу несколько каталогов обработать. Добавлено: Вот нашел неофициальный сайт про Exif, но с официальными спецификациями: http://www.exif.org/ Сообщение было отредактировано jTommy: Dec 2 2007, 18:00 |
![]() ![]() |
Упрощённая версия | Сейчас: 30th April 2025 - 22:39 |