IPB

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

> JPGStrip, снять всё с .JPG файлов
-=CHE@TER=-
Oct 13 2007, 09:50
Сообщение #1


Walter Sullivan
***

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



QUOTE
Скачать программу: >>>JPGStrip<<<

Кто уже читал мой обзор вот тут, наверняка заметил, что я не очень доволен ситуацией сложившейся с JPG стрипперами. Так что я написал свой, что называется, from scratch (с нуля).
Вот оно:
QUOTE
АХТУНГ! Программа на стадии тестирования - так что, на всякий пожарный, делайте резервные копии ваших .JPG файлов! Вас предупредили.


Последняя версия лежит на сайте в CTPAX-X Soft.

История изменений
QUOTE
Version: 0.25 -> 0.26 (2008.11.22)
---------------------
Grom PE * -=CHE@TER=-: Added CMYK and arithmetic coded images support.

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

Version: 0.23 -> 0.24 (2008.01.21)
---------------------
Grom PE * New fancy make.bat
Grom PE * Smaller jpgstrip.ico
Grom PE * Removed double import of WriteFile (Write2 function)
Grom PE * Changed year to 2008

Version: 0.22 -> 0.23 (2008.01.21)
---------------------
-=CHE@TER=- * Create filelist before handling
-=CHE@TER=- * Fixed problem with two '\' characters in path

Version: 0.21 -> 0.22 (2007.12.01)
---------------------
-=CHE@TER=- * jTommy: Fixed bug with incorrect section size
-=CHE@TER=- * jTommy: Fixed filename output (CharToOEM)
-=CHE@TER=- * Replaced copyright Grom PE / -=CHE@TER=- to CTPAX-X Team

Version: 0.2 -> 0.21 (2007.10.24)
--------------------
Grom PE * Fixed incorrect file size counting
Grom PE * Tabbed output, looks better
Grom PE * Changed 'B' to 'bytes', added thousands separation

Version: 0.11 -> 0.2 (2007.10.24)
--------------------
-=CHE@TER=- * Added /R commandline option
-=CHE@TER=- * Added /J commandline option
-=CHE@TER=- * Fix problem with FFD9
-=CHE@TER=- * CR/LF output fixed

Version: 0.1 -> 0.11 (2007.10.14)
--------------------
Grom PE * Fixed some typos
Grom PE * Replaced SysUtils' functions by helpers.inc
Grom PE * Changed Write to Write2, used Int2Str, Int2StrSpaces from helpers.inc
Grom PE * Changed Delphi's file handling to WinAPI
Grom PE * Changed some Integers to Cardinals
Grom PE * Changed Internal dynamic array to simple memory dynamic array
Grom PE * Replaced lstrcmpi by helpers.inc's LowerCase

Version 0.1 (2007.10.11)
-----------
-=CHE@TER=- * Initial release


Предложения по программе (этакий to-do):
1) Не записывать в выходной файл дублирующиеся секции?
2) Оставлять Exif информацию (прога удаляет весь мусор, кроме Exif).

Объясню общий алгоритм работы программы. Значит так: JPG файл состоит из блоков, каждый из которых начинается на FF (255). Общая структура, такова:

FFD8 FFxxSZ... FFxxSZ... FFDASZ... FFD9

ВСЕ блоки, кроме FFD8 (сигнатура JPEG) и FFD9 (маркер конца файла) имеют поле SZ - размер этой самой структуры (в Big Endian, так что его нужно разворачивать, что и делается).
xx - это некий номер, определяющий, что за данные находятся в этом блоке.
Алгоритм моей программы тупой как бревно - читаются эти блоки, из них читается байт xx и сравнивается с массивом разрешённых байтов (см. константу JPEGAllowBlocks) - если этого байта там нет - значит это какой-нибудь thumbnail или ещё какая-нибудь хрень, так что мы её пропускаем и не записываем в выходной файл.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Mar 27 2008, 13:36
Сообщение #2


Walter Sullivan
***

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



Обновил первый пост - 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[]) добавить поле - номер секции с проверкой: дублирующиеся секции не добавлять?


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме
-=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=-   Обновил первый пост - JPGStrip 0.25: Блин, чертов...   Mar 27 2008, 13:36
Grom PE   - show error if no files given Не совсем понял про...   Mar 27 2008, 14:27
-=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


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

 



Упрощённая версия Сейчас: 29th April 2024 - 09:03