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=-
Nov 15 2008, 09:47
Сообщение #2


Walter Sullivan
***

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



Нашёл, наверное хрестоматийный, пример безнадёжно изгаженной картинки:
CODE
http://www.bruteprop.com/v3/gallery/images/wesk811.jpg

Занимает 819,693 байта из которых остаётся только 228,764, а остальные 590,929 байт - не поверите - мусор!!!
Причём редкостный мусор, который точно никому не нужен - если интересно скачайте картинку и посмотрите на её содержимое где-нибудь в FAR'е по F3 - и этот хлам качается без спроса и согласия.
Но такие картинки скорее исключение из правил, нежели правило, однако наглядно показывают как нужно правильно тратить чужой трафик, делать невыносимо тяжеловесные сайты и пользоваться настолько же убогим софтом создающим такие файлы.
Это не учитывая то, что для такого скудного количества цветов самым подходящим форматом по критериям размер/качество был бы .PNG!
Справедливости ради нужно отметить, что после снятия всякого в файле вылетают цвета - ICC-Profile?..
Надо, всё-таки, прикрутить его поддержку в JPGStrip. Постараюсь глянуть что в этой картинке не так.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Grom PE
Nov 18 2008, 16:35
Сообщение #3


Advanced Member
***

Группа: CTPAX-X
Сообщений: 84
Регистрация: 7-February 08
Из: i@grompe.org.ru
Пользователь №: 3,120
Спасибо сказали: 95 раз(а)



QUOTE(-=CHE@TER=- @ Nov 15 2008, 17:47) *
ICC-Profile?..
Надо, всё-таки, прикрутить его поддержку в JPGStrip. Постараюсь глянуть что в этой картинке не так.
А что там прикручивать? Раскомментировать $EE в JPEGAllowBlocks и всё.
Кстати, это не ICC-профиль, а указание на то, что картинка в CMYK. И занимает всего 16 байт.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Nov 18 2008, 16:44
Сообщение #4


Walter Sullivan
***

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



QUOTE(Grom PE @ Nov 18 2008, 16:35) *
А что там прикручивать? Раскомментировать $EE в JPEGAllowBlocks и всё.
Кстати, это не ICC-профиль, а указание на то, что картинка в CMYK. И занимает всего 16 байт.
Проблема в том, что у некоторых не CMYK картинок этот блок тоже торчит, хотя если его убрать ничего не изменится. Надо как-то детектить, когда его можно резать, а когда нет.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Grom PE
Nov 18 2008, 17:53
Сообщение #5


Advanced Member
***

Группа: CTPAX-X
Сообщений: 84
Регистрация: 7-February 08
Из: i@grompe.org.ru
Пользователь №: 3,120
Спасибо сказали: 95 раз(а)



QUOTE(-=CHE@TER=- @ Nov 19 2008, 00:44) *
Проблема в том, что у некоторых не CMYK картинок этот блок тоже торчит
Хотелось бы пример такой картинки.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Nov 19 2008, 12:33
Сообщение #6


Walter Sullivan
***

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



QUOTE(Grom PE @ Nov 18 2008, 17:53) *
Хотелось бы пример такой картинки.
Да запросто - бери любую картинку, открывай в Photoshop и сохрани её там в .JPG - независимо CMYK она или нет 0xEE там будет с надписью "Adobe"#0. Я уже писал об этом (см. 3, 4).


Добавлено:
QUOTE(Grom PE @ Nov 18 2008, 16:35) *
Кстати, это не ICC-профиль, а указание на то, что картинка в CMYK.
Некогда было разбираться просто - поэтому предположил, что ICC.
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



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