Создание нового формата для графики

Хочу сразу предупредить, что данный формат нисколько не лучше, а во многих случаях (например, в объеме) и хуже ныне существующих. Возникает закономерный вопрос: Для чего же тогда "городить огород"? Отвечу просто: меня увлекла сама идея сохранения графических файлов в текстовом формате. Поэтому можете рассматривать этот пример как "гимнастику для ума". А если кого-то это заинтересует, то, возможно, будут предложены алгоритмы более быстрые и компактные.

Итак, общая идея: выделяем вначале 5 полей для служебной информации. Я подумал, что это должны быть:
Во-первых: описательная информация, например название картинки.
Во-вторых и третьих - это размеры картинки. Не будем оригинальны и дадим их в пикселах.
В четвертых - укажем версию нашего графического формата
И в пятых - зарезервируем, на всякий случай, пустое текстовое поле.
С информационной частью разобрались. Далее попиксельно считываем цвета и записываем их в текстовый файл. И все :-)

Считывание и отображение полученной информации в PictureBox происходит аналогично.
Здесь можно взять пример, реализующий запись и считывание информации.


Зная структуру файла, Вы можете начать создавать свои усовершенствования и фильтры к программе, выводящей изображение. Вот только несколько примеров, проведенных в процедуре OpenNewFormat
1. изменим строку, считывающую горизонтальную развертку на следующую
For lX = lWidth - 1 To 0 Step -1
и у нас открывается исходный файл в зеркальном отображении
2. а если вывод попиксельного изображения представить так
Call SetPixel(.hdc, lX, lY, 16777215 - lColor)
то получим негатив.
3. имитацию "телевизионной" картинки можно получить, если выводить информацию через строку
For lY = 0 To lHeight - 1
If lY Mod 2 = 0 Then
For lX = 0 To lWidth - 1
Input #1, lColor
Call SetPixel(.hdc, lX, lY, lColor)
Next
Else
For lX = 0 To lWidth - 1
Input #1, lColor
Next
End If
Next

Так что перспективы достаточно большие. Весь вопрос - в заинтересованности.

P.S. Расширение "*.dg" - от digital grafik

 

·  Имя: Михаил Эскин

·  Сайт: mik-seite

Hosted by uCoz