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