Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Загрузка изображений в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.038 c
3-89187
pashtet
2003-10-06 12:29
2003.10.27
Запрос на кол-во записей во всех таблицах БД


6-89425
arous
2003-09-01 21:53
2003.10.27
Почтовый клиент


1-89340
alex_M
2003-10-16 12:08
2003.10.27
Как в StringGrid сделать объединение ячеек, например как в Excel


3-89148
vantage10
2003-10-08 16:04
2003.10.27
ADO+Access выбор по незаполненным полям


4-89651
DANTIST
2003-08-20 19:43
2003.10.27
Работа из Delphi с DLL на C++