Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 090

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Столкнулся с такой проблемой: нашел распаковщик файлов для серии игр, который отлично работает для более новых частей игры, но для отображения фалов из ранних частей он не приспособлен. Я наткнулся на форум где пользователь нашел как сконвертировать в изображения файлы старых игр, цитата

the pic file format is like some raw bmp file.
It looks likes this :

file head (18bytes)
24bit rgb raw data
Last line --->First line

and i have converted a pic to bmp by add a 54bytes bmp head with hand

Может кто-то сталкивался с нечто подобным и может подсказать что именно автор мел в виду под всем этим и как это можно осуществить? Заранее спасибо!

A000Y Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: A000Y (статус: Посетитель)
Вопрос отправлен: 20 апреля 2012, 10:44
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 14; последнее сообщение — 22 апреля 2012, 20:41; участников в обсуждении: 4.
DNK

DNK (статус: Студент), 20 апреля 2012, 11:32 [#1]:

Ты нашлел иструмент, который не приспособлен для более старых форматов искомого инструмента. И наткнулся на форуме на объянение, что чувак вместо 18-байтного заголовка использовал 54-байтный. Я с таким не сталкивался. Пожалуйста!
"Digital Networked Knight"
min@y™

min@y™ (статус: Доктор наук), 20 апреля 2012, 13:05 [#2]:

Цитата (A000Y):

что именно автор мел в виду

Ну, дык, обратись непосредственно к автору, ёмаё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
A000Y

A000Y (статус: Посетитель), 20 апреля 2012, 13:15 [#3]:

@ DNK, программа извлекает изображения из всех игр, просто в новых играх достаточно к извлеченному файлу EXAMPLE дописать .PNG и он будет отображаться как изображение, а в старых играх этого недостаточно и нужно с бубном танцевать меняя какие-то заголовки...

@ min@y™, к сожалению автор не посещал тот сайт уже несколько месяцев.
min@y™

min@y™ (статус: Доктор наук), 20 апреля 2012, 13:23 [#4]:

Цитата (A000Y):

к сожалению автор не посещал тот сайт уже несколько месяцев.

А выковырять из личных данных автора ICQ/e-mail/skype не судьба? Или он о себе ваще никаких координат там не оставил?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
A000Y

A000Y (статус: Посетитель), 20 апреля 2012, 13:26 [#5]:

min@y™, только ЛС на сайте, на который он не заходит)
min@y™

min@y™ (статус: Доктор наук), 20 апреля 2012, 13:34 [#6]:

Ну, тогда надо хотя бы посмотреть исходный файл и результат.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
A000Y

A000Y (статус: Посетитель), 20 апреля 2012, 13:38 [#7]:

Исходник http://data.cod.ru/148824

Результат http://photoload.ru/data/9c/a1/53/9ca15348ef51c8f309ad7044453da819.jpg
min@y™

min@y™ (статус: Доктор наук), 20 апреля 2012, 13:59 [#8]:

А ты ничего подозрительного не заметил? Например, что исходный файл весит 90 кб, а результат - 8.8 кб и является jpeg-картинкой (сжатие с потерей качества), несмотря на то, что

Цитата (A000Y):


the pic file format is like some raw bmp file. It looks likes this :

file head (18bytes)
24bit rgb raw data
Last line --->First line

and i have converted a pic to bmp by add a 54bytes bmp head with hand

На выходе тоже BMP должон быть!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 20 апреля 2012, 14:12 [#9]:

Что я ещё могу сказать. Действительно, заголовок BMP занимает 54 байта.

Вот его описалово:

Элемент палитры представляет собой четырёхбайтовую запись (структуру). В этой структуре хранятся составляющие R-красного, G-зеленого и B-синего цветов. Один байт зарезервирован. Палитра может и не использоваться, например в True Color.
Структура элемента палитры:

typedef struct tagRGBQUAD
{
        char   rgbBlue;
        char   rgbGreen;
        char   rgbRed;
        char   rgbReserved;
} RGBQUAD;
В поле тип сжатия должно стоять 0 - сжатие не используется, 1 - RLE8 сжатие, 2 - RLE4 сжатие. RLE8 - используется для сжатия 256-ти цветного изображения, RLE4 - используется для сжатия 16-ти цветного изображения.

В поле по смещению 28 (Бит/пиксел) должно стоять 1 - черно-белое изображение, 4 - 16-ти цветное, 8 - 256-ти цветное, 24 - True Color

typedef unsigned long DWORD;    // Двойное слово - 32 бита (разряда)
typedef unsigned int WORD;         //  Слово - 16 бит (разрядов)
typedef signed long LONG;
typedef unsigned int UINT;
 
 
// Заголовок файла
typedef struct tagBITMAPFILEHEADER
{
        UINT bfType;                // 'BM' = 4D42h
        DWORD bfSize;
        UINT bfReserved1;
        UINT bfReserved2;
        DWORD bfOffBits;        // Смещение к растру
} BITMAPFILEHEADER;    
 
// Заголовок Bitmap
typedef struct tagBITMAPINFOHEADER
{
        DWORD biSize;
        LONG biWidth;
        LONG biHeight;
        WORD biPlanes;
        WORD biBitCount;
        DWORD biCompression;
        DWORD biSizeImage;
        LONG biXPelsPerMeter;
        LONG biYPelsPerMeter;
        DWORD biClrUsed;
        DWORD biClrImportant;
} BITMAPINFOHEADER;
ВАЖНО!
Изображение сохраняется построчно СНИЗУ-ВВЕРХ.

Цитата (A000Y):

Last line --->First line

Для хранения каждой строки выделяется кратное 4 количество байт. В незначащих байтах хранится мусор.
Старшему биту или тетраде соответствует самый левый пиксел. При хранении изображения True Color каждому пикселу соответствуют три последовательные байта, хранящие составляющие цвета B, G, R; (не R, G, B).

Дальше давай сам, у меня тут работы вагон.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
A000Y

A000Y (статус: Посетитель), 20 апреля 2012, 14:15 [#10]:

min@y™, просто может автор эту картинку через какой-то radikal.ru заливал, который "оптимизирует форматы" до jpeg, ухудшая качество и уменьшая размер.
A000Y

A000Y (статус: Посетитель), 20 апреля 2012, 14:16 [#11]:

min@y™, большое спасибо, попробую разобраться)
min@y™

min@y™ (статус: Доктор наук), 20 апреля 2012, 14:32 [#12]:

Цитата (A000Y):

просто может автор эту картинку через какой-то radikal.ru заливал, который "оптимизирует форматы" до jpeg, ухудшая качество и уменьшая размер.

А я этого и не отрицал.

Цитата (A000Y):

большое спасибо, попробую разобраться)

Спасибо - это много, пива достаточно. :)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
bugmenot

bugmenot (статус: 3-ий класс), 22 апреля 2012, 11:31 [#13]:

Цитата (min@y™):

палитры

Цитата (min@y™):

Палитра

Цитата (min@y™):

палитры

Какой вообще может быть разговор о декодировании изображений без поллитры?
виконання програми розпочинається з того самого мiсця, де призупинилося.

min@y™

min@y™ (статус: Доктор наук), 22 апреля 2012, 20:41 [#14]:

Цитата (bugmenot):

Какой вообще может быть разговор о декодировании изображений без поллитры?

Да, дружище! Без поллитры тут не обойтись!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:37
Выполнено за 0.03 сек.