Текущий архив: 2002.07.15;
Скачать: CL | DM;
ВнизЗагрузка данных в Image Найти похожие ветки
← →
SkyQuake (2002-07-04 14:31) [0]Люди проблема следующая. Есть: Image, файл с картинкой и файл содержащий разного рода информацию в т.ч. картинки разных форматов. Моя задача прочитать картинку из файла, и я это делаю так:
BlocRead (f,Buf^,Size)
но вот как теперь запихнуть это в Image?
Пусть формат jpg, тогда все манипуляции сPicture.Bitmap
отпадают. Если предложение будет ипользоватьTMemoryStream
, то плиз не поленитесь сначала протестировать, потому как все мои попытки закончились -Access violation ...
← →
Skier (2002-07-04 14:34) [1]>SkyQuake
> тогда все манипуляции с Picture.Bitmap отпадают
А Picture.Graphic не подойдёт ?
← →
Volj (2002-07-04 14:37) [2]Зачем так извращаться...
TJpegImage.LoadFromFile
А что касается других форматов - ...
← →
SkyQuake (2002-07-04 14:41) [3]Дык ведь говорю же что ни чего с потоками не выходит. Пишу:
Image1.Picture.Graphic.SaveToStream (Stream)
затем
Image2.Picture.Graphic.LoadFromStream (Stream)
и ни чего в Image2 не появляется. Я и так и эдак его... Нуль!
← →
Skier (2002-07-04 14:47) [4]>SkyQuake
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988625147&n=21
← →
SkyQuake (2002-07-04 14:48) [5]То Volj.
Обьясняю данные мои в некоем файле. Ты предлагаеш сначала их в файл кинуть и только потом оттедова грузить? Это знаешли per rectum (через задницу).
← →
SkyQuake (2002-07-04 15:02) [6]>Skier
Нет, спасибо конечно за полезную инфу. Но фишка в том что я имею данные в jpg, а не в bmp. То есть файл тот как бы содержит в себе файл "картинка.jpg" и я не хочю (могу конечно и так) сначала записывать на диск, а потом юзать .LoadFromFile
потому как это - смотри выше:)
← →
Skier (2002-07-04 15:06) [7]>SkyQuake
Посмотри описание TJPEGImage.DIBNeeded
← →
Volj (2002-07-04 15:12) [8]2SkyQuake
Извини, я неправильно понял subj. А у тебя как записаны данные в файл? Через SaveToStream или нет?
← →
SkyQuake (2002-07-04 16:40) [9]Проблема более или менее локализовалась.
Например с bmp файлом проходит всё отлично, а вот с jpg-ом не идёт. На строке
Image2.Picture.Graphic.LoadFromStream (Stream)
выдаёт "Acces violation ..."
То есть я пишу так:
Image1.Picture.LoadFromFile("picture.jpg");
Image1.Picture.Graphic.SaveToStream (Stream);
Stream.Position:=0;
Image2.Picture.Graphic.LoadFromStream (Stream);
и ошибка...
← →
Skier (2002-07-04 16:49) [10]>SkyQuake
Грузи не в Image1.Picture а в TJPEGImage !
TJPEGImage.LoadFromFile("picture.jpg");
потом TJPEGImage.DIBNeeded (?)
И будет тебе BMP...
← →
SkyQuake (2002-07-04 16:55) [11]>Skier
То есть ты пркдлагаешь таскать из формата в формат одну и ту же картинку, ведь сохранять в тот самый файл (большой который с разного рода данными) я захочу в jpeg"е. А если я буду туда сюда преобразовывать каженый раз, то чегож у меня будет после 10-15 открытий сохранений?
← →
Skier (2002-07-04 16:59) [12]>SkyQuake
Тебе нужно просто прочесть jpeg и
отобразить его в TImage-e ? (А дальше ты знаешь как действовать...) И это всё.
Так я понял ?
← →
SkyQuake (2002-07-04 17:09) [13]1. Мне нужно отобразить в TImage-е то что находится в Stream
2. Мне нужно скинуть в Stream то что находится в TImage-е
А на TJPEGImage компилятор ругается. Грит незнаю такого идинтификатора. Во, как.
← →
Volj (2002-07-04 17:18) [14]"А на TJPEGImage компилятор ругается" - uses JPEG.
А для преобразований форматов можно использовать обычный Assign (но только после того, как нужный формат будет загружен)
← →
Skier (2002-07-04 17:22) [15]>SkyQuake
Может это подойдёт :
var
AJPEGImage : TJPEGImage;
AStream : TFileStream;
begin
AJPEGImage := TJPEGImage.Create;
AStream := TFileStream.Create("E:\###\333\testimg.jpg", fmOpenRead);
try
AJPEGImage.LoadFromStream(AStream);
AJPEGImage.DIBNeeded;
Image1.Picture.Bitmap.Assign(AJPEGImage);
finally
AStream.Free;
AJPEGImage.Free;
end; //try
AStream := TFileStream.Create("E:\###\333\testimg.bmp", fmCreate);
try
Image1.Picture.Bitmap.SaveToStream(AStream);
finally
AStream.Free;
end; //try
end;
← →
SkyQuake (2002-07-04 17:39) [16]>Skier Спасибо за заботу. Но у меня выкристализовалось (ого:) следующее решение:
Значить когда битмап
поступаем так:
Image1.Picture.LoadFromFile("picture.bmp");
Image1.Picture.Graphic.SaveToStream (Stream);
Stream.Position:=0;
Image2.Picture.Graphic.LoadFromStream (Stream);
А когда jpeg
Uses JPEG;
var
stream: TMemoryStream;
j: TJPEGImage;
begin
j:= TJPEGImage.Create;
stream:= TMemoryStream.Create;
try
Image1.Picture.LoadFromFile("picture.jpg");
Image1.Picture.Graphic.SaveToStream(Stream);
Stream.Position:=0;
Image2.Picture.Graphic := j;
Image2.Picture.Graphic.LoadFromStream(Stream);
finally
stream.Free;
j.Free;
end;
Огромное СПАСИБО Uncle Budda(в одиге) за совет
Страницы: 1 вся ветка
Текущий архив: 2002.07.15;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.01 c