![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=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 раз(а) ![]() |
Пофиксил работу с повторной обработкой - сначала делаю список файлов в памяти и его обрабатываю потом.
Косяк с двумя косыми чертами - ExtractFilePath из утилит Grom PE возвращял на конце "\", чего стандартная функция Delphi не делает. Сейчас добавил пару проверок, так что пофигу из-под чего компилируется. Переместил исходные коды на Team FTP. QUOTE Version: 0.22 -> 0.23 -=CHE@TER=- * Create filelist before handling -=CHE@TER=- * Fixed problem with two '\' characters in path Кстати, немецкая Википедия считает, что 0xEE - это "Often for copyright records" (гуглом превёл). Т.е. грубо говоря, Adobe отказывается открывать CMYK файл, если его не фотожоп создал или оттуда его копилефт "Adobe" вырезали?.. А вот интересно, как узнать, что файл CMYK, чтобы этот блок оставить? И он ещё отличается от других таких же блоков в не CMYK-файлах. Если понять, какой байт или поле в этом блоке отвечает за его нужность/ненужность, то можно анализировать и оставлять, если надо. Только вот описание этого блока нигде не нашёл... А уж описание того, что туда Adobe суёт, мне кажется, вообще не найти - это ноу-хау. |
![]() ![]() |
Упрощённая версия | Сейчас: 30th April 2025 - 22:36 |