Текущий архив: 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