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

Вниз

Загрузка изображений в Image   Найти похожие ветки 

 
Checist [root]   (2003-10-15 13:54) [0]

Как мне загрузить картинку (bmp или jpg) в Image1 из Интернета.
Например адресс у картинки http://www.pictures/pict1.jpg
Есть ли какой-то метод или специальный компонент?


 
Reindeer Moss Eater   (2003-10-15 13:56) [1]

метод HTTP GETи
методы TImage LoadFrom....


 
Checist [root]   (2003-10-15 14:05) [2]

LoadFromFile и т.д. не проходят при попытке, он ижет файл по адрессу: папка проги + урл адресс. Короче фигня, еще есть варианты?


 
Checist [root]   (2003-10-15 14:16) [3]

Может компоеннт какой есть, а?


 
Checist [root]   (2003-10-15 14:31) [4]

Ну, так что?


 
Reindeer Moss Eater   (2003-10-15 14:40) [5]

LoadFromFile и т.д. не проходят при попытке, он ижет файл по адрессу: папка проги + урл адресс. Короче фигня, еще есть варианты?

Кто тебе сказал такую ерунду, что LoadFromFile надо применять к URL????

Тебе сказали что сначала нужно получить содержимое файла по HTTP, а потом загрузить полученное с помощью LoadFrom....


 
Checist [root]   (2003-10-15 14:45) [6]

LoadFrom... чего? Какой метод нужен?


 
Reindeer Moss Eater   (2003-10-15 14:49) [7]

Во что выгрузишь полученный файл - лоад фром то и надо делать.

Получишь его в файл - LoadFromFile
Получишь его в файл и создашь файловый поток на получившийся файл - LoadFromStream.
И т.д.


 
Checist [root]   (2003-10-15 14:52) [8]

Пытаюсь так - не выходит, поправь меня.

procedure TForm1.Button1Click(Sender: TObject);
var
St1:TStream;
begin
// Label1.Caption - полный урл к картинке
Try IDHTTP1.Get(Label1.Caption, St1);
Except ShowMessage("Jay"s mother"); Exit;
Image1.Picture.Graphic.LoadFromStream(St1);
Label2.Caption := s;
end;
end;


 
Palladin   (2003-10-15 14:54) [9]

мда... если отформатировать все станет на свои места


 
Checist [root]   (2003-10-15 15:01) [10]

Точнее я делаю так - ну так как быть?

procedure TForm1.Button1Click(Sender: TObject);
var
St1:TStream;
begin
// Label1.Caption -


 
Palladin   (2003-10-15 15:03) [11]

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


 
Reindeer Moss Eater   (2003-10-15 15:03) [12]

Пытаюсь так - не выходит, поправь меня.

Куда и что должно выходить и что именно не выходит?
Где создается экземпляр TStream?


 
Checist [root]   (2003-10-15 15:07) [13]

Честно говоря я тут чайник, как нужно создавать экземпляр TStream, я переменную st1 описываю просто как тип Stream. Вылетает ошибка на строке Try IDHTTP1.Get(Label1.Caption, St1);
Искомый ресурс точно есть.


 
Checist [root]   (2003-10-15 15:10) [14]

Ну как, лучше?

procedure TForm1.Button1Click(Sender: TObject);
var
St1:TStream;
begin
Try
IDHTTP1.Get(Label1.Caption, St1);
Except
ShowMessage("Jay"s mother");
Exit;
end;
Image1.Picture.Graphic.LoadFromStream(St1);
end;


 
Reindeer Moss Eater   (2003-10-15 15:13) [15]

var St1:TStream;
begin
try
Str1:= TMemoryStream.Create;
....
finally
end;
end;


 
Reindeer Moss Eater   (2003-10-15 15:14) [16]

var St1:TStream;
begin
try
Str1:= TMemoryStream.Create;
....
finally
Str1.Free;
end;
end;


 
Checist [root]   (2003-10-15 15:19) [17]

Теперь после получения картинки в St1, при попытке Image1.Picture.Graphic.LoadFromStream(St1);
Вылетает ошибка - я ставлю этот соурс в метод idHTTP1.OnWorkEnd.
Как быть теперь?


 
Reindeer Moss Eater   (2003-10-15 15:21) [18]

Что ты ставишь в idHTTP1.OnWorkEnd?
И зачем?


 
Checist [root]   (2003-10-15 15:25) [19]

Ды один хрен куда ствить - не пашит, блин!!!
Может по другому надо, но там (в St1) точно картинка формата jpg.


 
Reindeer Moss Eater   (2003-10-15 15:29) [20]

Конечно по другому.
У тебя же jpg.

uses Jpeg;

var jpg:TJpegImage;
begin
jpg:=TJpegImage.Create;
Str1.Position:=0;
jpg.LoadFromStream(str1);
Image1.Picture.Assign(jpg);
.....

end


 
Checist [root]   (2003-10-15 15:37) [21]

Большое вам спасибо.
Да, еше один вопрос: вот если эта картинка у меня уже есть в Temporary Internet Files, как мне ее снова загрузить в Image1 оттуда, а не из инета?
Плиз, дайте ответ!


 
Reindeer Moss Eater   (2003-10-15 15:41) [22]

LoadFromFile(имя_файла);
Но ты ведь не это имеешь ввиду, а как найти папку TIF и именно эту картинку в TIF?


 
Checist [root]   (2003-10-15 15:45) [23]

Да именно это, однажды мне здесь дали ответ:
При помощи GetUrlCacheEntryInfo выудить имя файла в кеше...
Но что это и с чем его есть я не знаю, а очень хочется.
Помогите, очень прошу!


 
Checist [root]   (2003-10-15 15:58) [24]

Помогите!


 
Reindeer Moss Eater   (2003-10-15 16:11) [25]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/geturlcacheentryinfo.asp

uses WinInet;

var
ei: TInternetCacheEntryInfo; BuffSize:Cardinal;
begin
...
end;


 
Checist [root]   (2003-10-15 16:17) [26]

Если не ломает можешь чуть подробней и по русски как мне: картинку с адрессом http://www.pic/pic1.jpg вытащить из Tif и залить в Image1.


 
Reindeer Moss Eater   (2003-10-15 16:25) [27]

Объяви переменные как в [25].
Вызови GetUrlCacheEntryInfo(PChar(" http://www.pic/pic1.jpg"),ei,BuffSize);

Если вернет True, то ei.lpszLocalFileName будет указывать на полный путь файла в кэше.
Если False, то вызывай GetLastError.
Если он вернул ERROR_FILE_NOT_FOUND то файла в кэше нету.
Если он вернул ERROR_INSUFFICIENT_BUFFER то буфер был мал.
Смотрим текущее значение BuffSize, присваиваем его ei.dwStructSize и повторяем все снова.


 
Checist [root]   (2003-10-15 16:30) [28]

БОЛЬШОЕ ВАМ СПАСИБО ОТ ВСЕХ ЖИТЕЛЕЙ ЗЕМЛИ И БЛИЖНИХ ГАЛАКТИК!!!


 
Reindeer Moss Eater   (2003-10-15 17:38) [29]

Небольшая поправка. Windows не распределяет память под возвращаемые строковые значения, а пишет их сразу позади 80-ти байтовой структуры TInternetCacheEntryInfo. Поэтому надо позаботиться о распределении памяти самому.

procedure TForm1.Button1Click(Sender: TObject);
var BuffSize:Cardinal; p:PInternetCacheEntryInfo;
begin
BuffSize:=0;
GetUrlCacheEntryInfo(PChar(" http://www.delphimaster.ru/i/logo.gif"),p^,BuffSize);
case GetLastError of
ERROR_FILE_NOT_FOUND : ShowMessage("ERROR_FILE_NOT_FOUND");
ERROR_INSUFFICIENT_BUFFER : try
GetMem(p,BuffSize);
p^.dwStructSize:=SizeOf(TInternetCacheEntryInfo);
if GetUrlCacheEntryInfo(PChar(" http://www.delphimaster.ru/i/logo.gif"),p^,BuffSize) then
ShowMessage(p^.lpszLocalFileName);
finally
FreeMem(p,BuffSize);
end;
end;
end;



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

Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.013 c
1-89336
Users
2003-10-16 15:20
2003.10.27
Разделение периода дат на доп-е периоды.


14-89546
ИМХО
2003-10-07 22:47
2003.10.27
Приобрести компакт-диски с музыкой


1-89282
Марат
2003-10-14 13:02
2003.10.27
Screen


6-89426
Pavel Oliynik
2003-09-01 15:59
2003.10.27
как показывать прогресс закачки почты в IdPOP3


11-89195
mike.dld
2003-02-10 20:05
2003.10.27
...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский