Архив сообщества
2011 — 2019
Аватар tizit

Вопросы-вопросики по .dmi формату

Автор: tizit · 02.04.2015, 16:47 · 7 сообщений

Сообщений в теме: 7

tizit#1

Я тут пилю динамическую карту для бьенда, или вроде того. Делаю на PyQt5, это короче порт обычного Qt на питон. Сам Qt - хорошая библиотека для рисования графических интерфейсов, вроде можно даже 3d прикрутить.

Пока я на стадии импорта изображений, карты и кода из бьенд-файлов. С кодом и картой нет проблем, они существуют в виде текста, а вот изображения импортируются только в формате png. И если в исходном файле есть анимация, то она раскладывается на кадры, и при этом теряются "state", скорость воспроизведения анимации и прочие текстовые штуки, а как их оттуда достать я не знаю.

Notepade++ не видит там каких-то текстовых строк.

Может кто знает как их правильно открывать.

Скопировать ссылку
qed#2

Единственное что я могу посоветовать сходу, так это найти подробную документацию по бьёндовским форматам и относительно этого уже писать код импортера изображений. Я сомневаюсь что текст с анимацией будет храниться в фаиле в несжатом виде, поэтому его найти и не удалось.

Скопировать ссылку
JamsMor#3

Лично как мне говорили, DMI файлы это обычные файлы обычных изображений, только к ним ещё код бьёнда приписывается.

Скопировать ссылку
tizit#5

Я совсем не разбираюсь в этом деле, но заметил, что открывая png файлы нотпадом, он находит в их начале PNG, и видимо таким образом графические редакторы открывают dmi как png, просто читая формат в самом файле.

Скопировать ссылку
ZLOFENIX#7

Это обычное пнг, у него в информации вся анимация и прописана. Т.е. это в пнг стандарте возможно и нормально. Можешь даже просто сменить расширение и нихуя не потеряешь.

Держи какой-то мой древнокод на крестах и libpng

int convert(string path, string filename)
{
FILE *fp = fopen(path.append(filename).c_str(), "rb");
if (!fp)
return 1;
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,(png_error_ptr)NULL, (png_error_ptr)NULL);
if (!png_ptr)
{
fclose(fp);
return 2;
}
png_infop info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr)
{
png_destroy_read_struct(&png_ptr, NULL, NULL);
fclose(fp);
return 3;
}
png_init_io(png_ptr, fp);
png_read_info(png_ptr, info_ptr);
ofstream zfile("test.txt");
zfile << info_ptr->text->text;
zfile.close();
png_destroy_info_struct(png_ptr, &info_ptr);
png_destroy_read_struct(&png_ptr, NULL, NULL);
fclose(fp);
return 0;
}

Скопировать ссылку

Обратно в Dream Maker