Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Как записать в файл рисунок?   Найти похожие ветки 

 
VAmpiro$   (2004-09-21 02:07) [0]

Как записать в файл рисунок?
Есть к примеру переменные:

Var
st:String[10];
intA:array [1..100] of integer;


как м мне их записать в файл с какимто рисунком...
к примеру: которий сидит на TImage?


 
GuAV ©   (2004-09-21 02:46) [1]

чтобы "запихнуть" переменные в файл используются либо процедуры для работы с файлами Delphi (Write, BlockWrite..), WinAPi (WriteFile ...) либо обёртками файла типа TFileStream.

Рисунок сохранить методом SaveToFile.

записать дополнительные переменные в файл с рисунком BMP, не изменив его данных и не нарушив его структуры невозможно, т.к. в структуре BMP несто для дополнительных данных не предусмотрено.


 
_ALEXey_   (2004-09-21 10:39) [2]

Усли я правильно понял о чем речь, то почитай про стеганографию.


 
VAmpiro$   (2004-09-23 01:08) [3]

Нузно создать файл

который содержит
A1: array[1..255] of Single;
P1: array[1..255,1..3] of Single;
Count: byte;

и еще рисунок, ну пусть Bitmap


 
Defunct ©   (2004-09-23 01:20) [4]

VAmpiro$   (23.09.04 01:08) [3]

такой файл создать нельзя, потому что при создании файл будет пустым.


 
Константинов ©   (2004-09-23 01:35) [5]

Краем уха слышал про алгоритм, который использует для записи данных в битовую матрицу самый младший бит состовляющих цвета ( R,G,B ) на глаз изменение цвета не заметно, а вот в каждом пикселе рисунка по 3 бита сохранить можно запросто.


 
Defunct ©   (2004-09-23 01:48) [6]

Константинов ©   (23.09.04 01:35) [5]

ну во-первых "слушу звон да не знаю откуда он" не 1 бит сохраняется, а M bit где M<N, N - число бит на канал. Алгоритм сокращения объема за счет урезания качества. Но есть более продвинутые алгоритмы причем, молчу про JPG достаточно взять PCX (сокращение объема рисунка с сохранением качества) - цепочка точек с одинаковым цветом кодируется как: Record (Цвет, Количество точек)

во-вторых 3 бита на точку дадут нам всего 8 цветов, и уж поверьте на глаз изменение качества будет очень сильно заметно.

в-третьих младший бит, как правило, наименее значащий. Именно он менее всего влияет на цвет и его изменение наименее заметно для глаза. Вы говорите что сохраняется именно он, это все равно что результирующий цвет генерировать функцией Random.

в-четвертых ваш постинг ну никак не вяжется с вопросом, как впрочем и мой.


 
sniknik ©   (2004-09-23 08:40) [7]

http://delphimaster.net/view/15-1095717751/
чего человеку надо, так это книга про программирование и желание ее изучат. (и это искренне не для издевки)

ведь нужно элементарные вещи, файлы создать, а от незнания пишет так что можно понять что нужно чтото особо извратное, что так просто и не сделаеш.

p.s. данные после рисунка в файле *.bmp должны игнорироваться насколько понимаю, и откроется такой где угодно. можно и так, прятать их по условию же не нужно. можно от этого "плясать".


 
Anatoly Podgoretsky ©   (2004-09-23 08:48) [8]

Учись формулировать мысли


 
VAmpiro$   (2004-09-23 12:28) [9]


> sniknik ©   (23.09.04 08:40) [7]
> http://delphimaster.net/view/15-1095717751/
> чего человеку надо, так это книга про программирование и
> желание ее изучат. (и это искренне не для издевки)
>
> ведь нужно элементарные вещи, файлы создать, а от незнания
> пишет так что можно понять что нужно чтото особо извратное,
> что так просто и не сделаеш.
>
> p.s. данные после рисунка в файле *.bmp должны игнорироваться
> насколько понимаю, и откроется такой где угодно. можно и
> так, прятать их по условию же не нужно. можно от этого "плясать".


файл то я могу уже давно умею создавать!

вот в чем дело!
имеются координаты точек,их количество, и еще некоторие параметры:

type
NProperty=(Visible,Extern,Discord);

File=record
Position:Array[1..255,1..3] of Single;
Property:array[1..255] of NNProperty;
{ЧТО МНЕ ЕЩЕ СУДА НУЖНО ВПИСАТЬ ЧТО-БЫ В ФАЙЛЕ МОЖНО БЫЛО СОХРАНИТЬ МАСИВ Array[1..32] Bitmap"ов }
end;


Не пишите в пустую а дайте полезний совет.


 
Amoeba ©   (2004-09-23 12:33) [10]

У автора вопроса явно в голове полнейшая каша. Если бы он сперва как следует засел за учебник, то и таких вопросов, как заданный им не возникало.


 
Defunct ©   (2004-09-23 14:51) [11]

> файл то я могу уже давно умею создавать!
Ваши вопросы показывают обратное.

вот в чем дело!
имеются координаты точек,их количество, и еще некоторие параметры:

type
NProperty=(Visible,Extern,Discord);

File=record
Position:Array[1..255,1..3] of Single;
Property:array[1..255] of NNProperty;
{ЧТО МНЕ ЕЩЕ СУДА НУЖНО ВПИСАТЬ ЧТО-БЫ В ФАЙЛЕ МОЖНО БЫЛО СОХРАНИТЬ МАСИВ Array[1..32] Bitmap"ов }
end;


Покажите в каком месте здесь координаты точек и где же их количество? Вы думаете все понятно что такое Position of Single?
или NNProperty - стандартный тип?
Обычно для сохранения изображения, достаточно задаться шириной и высотой рисунка в точках, а далее просто записать цвет всех точек.

> Не пишите в пустую а дайте полезний совет.Полезный совет:
Не пишите бессмыслицу в пустую, на которую никто не может ответить.

Сформулируйте нормально ваш вопрос, например так:

"Я хочу сделать то-то и то-то, делал так-то и так-то, но ничего не выходит потому что появляются такие-то ошибки компилятора и такие-то ошибки в RunTime."


 
sniknik ©   (2004-09-23 15:48) [12]

> {ЧТО МНЕ ЕЩЕ СУДА НУЖНО ВПИСАТЬ ЧТО-БЫ В ФАЙЛЕ МОЖНО БЫЛО СОХРАНИТЬ МАСИВ Array[1..32] Bitmap"ов }
конкретно сюда ничего, чего ни пиши толку не будет.

можно конечно придумать исключения, типа, что битмапы все исключительно одинаковой длинны, тогда можно расчитать размер и вставить как есть масив из байтов, куда и сохранять значение битмапа.
а не указатель.
как это сделать я тебе не скажу (просто лень долго и нудно обьясьнять), подсказку дам... положи на форму компонент timage, в него закачай рисунок(чтобы отобразился), а после правой кнопкой мыши на форме и жми view as text, попадеш в dfm модуль иши там timage и смотри что в данных (а это твой рисунок и есть).
сложно сделать такой же массив? делай. придумывай как с разными размерами быть и т.д.


 
Erik1 ©   (2004-09-23 16:26) [13]

Ну еще можно заголовок сделать куда записать сколько их, откуда у нас начинаются BitMaps, соответственно все смещения незабыть или абсолютные позиции. После в загоровке записать позицию начала record - File. А есть такой зверь как структурированые хранилища, разработка своего компонента очень изящное решение он может писать себя в поток, правда придется разбтратся с TWriter TRiader. Но кому сейчас легко?


 
VAmpiro$   (2004-09-25 00:56) [14]

type
NProperty=(Visible,Extern,Discord);
Я подучиваю Open GL, толко начинаю...
и хочю создать файл который бубет в себе содержать
координаты точек 3D oбектов, и текстуры к ним..
что-то на подобе файлов *.mdl (Half-Life) {Ну там еще есть координаты и параметры скилета модели, не это не важно}

File=record
Position:Array[1..255,1..3] of Single;//коорднаты точек трехмерных обектов
Property:array[1..255] of NProperty;// свойства точек
Count:byte;// Кол-во точек
{Какой скрипт мне сюда еще нужно добавить для записи массива с "Bitmap"ов"}
end;


надеюс теперь то все понятно?!?!?


 
Defunct ©   (2004-09-25 01:08) [15]

угу теперь понятно, т.е. строится файл структуры, а не изображения.

тогда все очень просто, храните структуры отдельно от текстур и все будет "тип-топ"


 
VAmpiro$   (2004-09-26 00:54) [16]


> тогда все очень просто, храните структуры отдельно от текстур
> и все будет "тип-топ"


мне удобнее иметь под рукой текстуры, так мне с ниме в моем редакторе легче будет работать


 
Defunct ©   (2004-09-26 01:26) [17]

хм. тогда, советую посмотреть на структуру EML файла с вложением и сделеть нечто подобное.

допустип формат файла следующий:

- Заголовок (который включает кол-во полигонов и кол-во текстур)
- Полигоны подряд
- Текстуры подряд

где заголовок, например, такой:
T3DFileHeader = packed Record
 PolygonCount  : Integer;
 TexturesCount : Integer;
 CheckSum      : Integer;
End;

Полигоны состоят из точек и имеют какое-то свойство:

T3dPoint = packed Record
 X,Y,Z         : Single;
End;

TPolygon = packed Record
 Points          : Array[1..3] of T3dPoint;
 PolygonProperty : Byte;
End;

Текстуры сохранять из Bitmap"ов в стрим, а потом дописывать к файлу так: вначале объем битмапа, потом сам битмап.



Страницы: 1 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.027 c
3-1094813399
Vilkkkka
2004-09-10 14:49
2004.10.10
Firebird &amp; Interbase


14-1095420158
Nikolay M.
2004-09-17 15:22
2004.10.10
Никому инспектор в отдел кадров в Москве не требуется?


1-1096360702
Andrews
2004-09-28 12:38
2004.10.10
TPanel и стиль WinXP


3-1095156701
Chery
2004-09-14 14:11
2004.10.10
Базу в Access перевожу на MySQL, Midas


1-1096159405
Leaner
2004-09-26 04:43
2004.10.10
Ошибка: C0000008 в строке CloseHandle(FHand);