|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Подсчет размера DHT секции JPEG файла |
|
VBS/WSH/JS - [решено] Подсчет размера DHT секции JPEG файла
|
Пользователь Сообщения: 93 |
Доброй ночи!
Помогите, пожалуйста, в написании VBS скрипта подсчитывающего колиество байт DHT секции (Таблицы Хаффмана) JPEG файла. т.е. необходимо в стуктуре JPEG файла найти тэг "FF C4" и посчитать количество байт до следующей секции (обычно SOS "Начало Сканирования" = "FF DA"). Дополнительно прошу сделать условие, что если размер секции не превышает 200 байт выводить скажем параметр "А", а если превышает 300 - тогда "В". Значения находящиеся в промежутке меня пока не интересуют. Пы.Сы. Как и в прошлый раз (http://forum.oszone.net/post-1810917.html) это необходимо для подключения скрипта к Тотал Коммандеру и ввода значений в колонки для сортировки. |
|
Отправлено: 01:00, 29-04-2012 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать pzh2393,
Path = "c:\temp\Chicken.JPG" Set BinaryStream = CreateObject("ADODB.Stream") BinaryStream.Type = 1 BinaryStream.Open BinaryStream.LoadFromFile Path BinaryFile = BinaryStream.Read For i = 1 To LenB(BinaryFile) If AscB(MidB(BinaryFile, i, 1)) < 16 Then S = S & "0" & Hex(AscB(MidB(BinaryFile, i, 1))) Else S = S & Hex(AscB(MidB(BinaryFile, i, 1))) Next DHT = (InStr(S, "FFDA")-InStr(S, "FFC4"))/2-2 If DHT <= 200 Then WScript.Echo "A" If DHT >= 300 Then WScript.Echo "B" BinaryStream.Close |
Последний раз редактировалось El Sanchez, 04-05-2012 в 21:56. Причина: Не использовать! Пример неудачного скриптописания. Отправлено: 18:36, 03-05-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Спасибо! буду пробовать прикрутить к чему мне необходимо..
|
Отправлено: 22:40, 03-05-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать El Sanchez, я пробовал данный подход, и даже не стал выкладывать, поскольку не годится, ибо дико медленно. pzh2393, для данного случая Вам WSH не подойдёт — ну, нет у него вменяемых средств для подобной работы. Лучше попросите о том же в соседней ветке: Программирование, если Вам подойдёт исполняемый файл.
|
Отправлено: 23:49, 03-05-2012 | #4 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Iska:
pzh2393, предлагаю вариант №2, побыстрее: sPath = "c:\temp\e.jpg" nChunkSize = 1024 Set BinaryStream = CreateObject("ADODB.Stream") BinaryStream.Type = 1 BinaryStream.Open BinaryStream.LoadFromFile sPath Do While InStr(sRes, "FFDA") = 0 BinaryFile = Empty BinaryFile = BinaryStream.Read(nChunkSize) For i = 1 To nChunkSize sRes = sRes & Right("00" & Hex(AscB(MidB(BinaryFile, i, 1))), 2) Next If InStr(sRes, "FFDA") > 0 Then sHuffSection = Mid(sRes, InStr(sRes, "FFC4"), InStr(sRes, "FFDA")-InStr(sRes, "FFC4")) Do While InStr(sHuffSection, "FFC4") > 0 nDHTsz = nDHTsz + CInt("&H" & Mid(sHuffSection, 5, 4)) sHuffSection = Right(sHuffSection, Len(sHuffSection)-CInt("&H" & Mid(sHuffSection, 5, 4))*2-4) Loop End If Loop If nDHTsz <= 200 Then WScript.Echo "A" If nDHTsz >= 300 Then WScript.Echo "B" BinaryStream.Close |
||
Отправлено: 21:55, 04-05-2012 | #5 |
Пользователь Сообщения: 93
|
Профиль | Отправить PM | Цитировать Может всетаки получится, если упростим условие?
Выяснилось, что следующие два байта после тэга "FF C4" указывают на размер секции DHT в 16-ричном виде... Можно сделать поиск НЕХ значения "FF C4" перевод следующих за этим двух байт в 10-ричное значение и в зависимости от размера выдача результата? 2 El Sanchez Премного благодарен! Видимо писал предыдущее сообщение в одно время с вами... Сейчас проверил - срабатывает именно так, как необходимо! |
Отправлено: 21:56, 04-05-2012 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата pzh2393:
|
|
Отправлено: 23:00, 04-05-2012 | #7 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата pzh2393:
|
|
Отправлено: 11:35, 05-05-2012 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] подсчет времени выполнения командного файла | mitiya | Скриптовые языки администрирования Windows | 5 | 15-04-2014 10:42 | |
VBS/WSH/JS - определение размера файла | D_e_n_n | Скриптовые языки администрирования Windows | 9 | 24-02-2012 17:09 | |
увеличение размера файла | vlasoft | Хочу все знать | 10 | 16-10-2011 18:01 | |
JPEG из VOB-файла | kankot | Видео и аудио: обработка и кодирование | 1 | 28-12-2009 13:10 | |
Информация о содержимом файла: подсчет слов и т.д. | Balbec | Программирование в *nix | 2 | 08-07-2008 22:36 |
|