Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.013 c
1-47412
fissher
2002-07-02 22:04
2002.07.15
TRect


1-47298
TPavel
2002-06-30 22:41
2002.07.15
Открытие чужой программы.


4-47903
Rival
2002-05-13 15:13
2002.07.15
Как легко поместить иконку в трэй и вызывать из


1-47505
goliaph
2002-07-04 12:37
2002.07.15
Мастера, помогите!!!! Горю. Ыспользование таймера.


14-47750
VID
2002-06-12 22:42
2002.07.15
Достать пароль пользователя ICQ из его dat-файла