Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

Загрузка данных в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.596 c
1-47284
Gamar
2002-06-29 17:40
2002.07.15
Изменение цвета столбца в Run-Time


8-47615
Dennis $
2002-02-25 09:26
2002.07.15
Выделение TImage как объекта. Народ, помогите!


1-47525
DNT
2002-07-04 12:58
2002.07.15
Как правильно уменьшить иконку?


7-47833
ah
2002-04-21 20:47
2002.07.15
использую компоненту ComPort Library version 2.60


1-47548
Skier
2002-06-26 13:18
2002.07.15
Динамическое создание строк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский