процитируя самого себя, итак ещё кое что в N54: 19) 00 00 01 76 20) 00 00 00 C6 21) 00 00 01 C2 - (21) всегда больше чем (19) 22) 00 00 00 D6 это координаты в пикселах на фото - области гос-номера верхнего левого x(19) y(20) и правого нижнего x(21) y(22) углов, проверено фотошопом. : )
Новый прибор этой марки вместо фоток в формате JPEG делает снимки в формате RAW, причём они не открываются ни в каком конверторе этого формата. Они пишут, что файл не RAW формата. Однако после танцев с бубном удалось раскрыть один из снимков в Photoshop'е, но в ужасно смазанном виде.
Возможно ли, что данный файл нестандартно закодирован или зашифрован, а может быть в нём, например, недопустимый заголовок?
Насколько я понял, с xml-форматом у вас проблем не возникло - там вроде как всё разжёвано, и по тегам ясно можно понять что к чему. С форматом raw, - получил, разбираюсь.
хе-хе, просто, что даже неинтересно... значит так. Формат там обычный, попиксельно слева направо, построчно сверху вниз. 1 байт - 1 точка, и так всё подряд, размер файла точно равен [размер x] * [размер y]. Значение байта - яркость 0-255, т.е. монохромный-серый. Размер кадра (<nImageWidth><nImageHeight>) - 720 на 288 - это видео-полукадр. т.е. в высоту изображение имеет в два раза меньшее разрешение чем в ширину, но не беда. Формат этих данных наиболее близко напоминает несжатый tiff.
Для автоматического преобразования без фотошопа могу порекомендовать следующее. Идея в том, чтобы прикреплять заголовки tiff (2 штуки) перед raw данными и после них от заранее созданной заготовки. Создаём картинку TIFF размером 720*288 в монохромном формате. Фотошопом не советую пользоваться, т.к. он создаёт "грязные" заголовки. Я использовал PMVIEW, но видимо можно использовать IrfanView. От созданной пустышки отрезал начало (8 байт) и конец (258 байт). Простым командником склеиваем файлики...
===1.cmd BEGIN @echo off if exist x.tif del /q x.tif copy /b tiff0.bin + 2.raw x.tif copy /b x.tif + tiff1.bin x.tif ===1.cmd END 2.raw - исходное raw-изображение tiff0.bin - заголовок TIFF (8 байт) tiff1.bin - окончание TIFF (258 байт) x.tif - будущий франкенштейн-tif
в файле tiff1.bin байты по смещениям 5e,5f - размер по ширине, 6a,6b - по высоте, сейчас там 720 на 288
Небольшая проблемка - фото получается инверсным. Если использовать утилиту (а её всё равно придётся делать, да) то в ней перед склейкой байты тупо инвертируем. Заодно дублируем строки, надеюсь здесь понятно, как продублировать 720 очередных байт на входе в ещё 720 байт на выходе : ) Как преобразовать потом tiff в jpeg - ищите библиотечки, дальше дело техники. Как бы всё. ссылка http://www.mpfiles.ru/get/?28988
зы. .sign-то там не спроста появились, защита от таких как мы с вами, ага, точнее от модификаций фото.
спасибо, почти всё понятно. как раз утилитку и хочется сделать для автоматизации этого процесса. а можно попросить по-подробнее насчет "байты тупо инвертируем" и "Заодно дублируем строки"...
1. открываем на чтение 2.raw, открываем на запись x.tif 2. Пишем в x.tif копию tiff0.bin 3. читаем очередные 720 байт из raw в буфер, в массив. 4. По всем 720 байтам массива применяем формулу a[i]:=NOT a[i], если по арифметике то это будет a[i]:=0-a[i]-1. A - массив типа byte. 5. Cохраняем массив в выходной файл. 6. Сохраняем массив ещё раз. (дублируем исходную строку два раза) 7. Уменьшаем счётчик строк, если не все строки прошли - возврат к пункту 3. 8. Пишем в x.tif копию tiff1.bin 9. Закрываем x.tif, 2.raw.
При таком использовании в заголовке tiff1.bin нужно указать размер по вертикали 576 вместо 288.
Да, тут посмотрел опции сохранения tiff - можно задать tiff так, чтобы уровни яркости сами выбирались с инверсией - вот исправленный заголовок tiff2.bin, там по смещёнию 8e нужно 1 поставить вместо 0 http://www.mpfiles.ru/get/?28989