![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скопировать картинку из TWebBrowser в TImage? [D7, WinXP]
Jetus © (2006-10-25 10:28:00)На страничке в моём WebBrowser'e есть несколько картинок. На форме также есть компонент TImage.
Как мне скопировать конкретную картинку из браузера в TImage?
MetalFan (2006-10-25 16:09:00) [1]супер) в FAQ бы это... а то чтото не нашел нигде)
Gero (2006-10-25 15:58:00) [2]Что-то вроде этого:
uses
ExtActns, WinInet;
type
TForm1 = class(TForm)
FDownloadURL: TDownloadURL;
end;
implementation
function GetCacheFileName(const Url: string; var FileName: string): Boolean;
var
Info: PInternetCacheEntryInfo;
InfoBufSize: Cardinal;
begin
Result := False;
InfoBufSize := 0;
GetUrlCacheEntryInfo(PChar(Url), TInternetCacheEntryInfo(nil^), InfoBufSize);
if GetLastError = ERROR_INSUFFICIENT_BUFFER then
begin
GetMem(Info, InfoBufSize);
try
Result := GetUrlCacheEntryInfo(PChar(Url), TInternetCacheEntryInfo(Info^), InfoBufSize);
if Result then
FileName := Info^.lpszLocalFileName;
finally
FreeMem(Info);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FDownloadURL := TDownloadURL.Create(nil);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FDownloadURL.Free;
end;
procedure TForm1.SaveImageFromIE(Image: IHTMLImgElement; const SaveFileName: string);
var
URL: string;
CacheFileName: string;
begin
URL := Image.src;
if LowerCase(Copy(URL, 1, 7)) = 'file://' then
CopyFile(PChar(URL), PChar(SaveFileName), False)
else
begin
if GetCacheFileName(URL, CacheFileName) and FileExists(CacheFileName) then
CopyFile(PChar(CacheFileName), PChar(SaveFileName), False)
else
begin
FDownloadURL.URL := URL;
FDownloadURL.Filename := SaveFileName;
FDownloadURL.ExecuteTarget(nil);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Image: IHTMLImgElement;
begin
Image := (WebBrowser.Document as IHTMLDocument2).images.item('my_img', 0) as IHTMLImgElement;
if Image <> nil then
SaveImageFromIE(Image, 'C:\MyImg.jpg');
end;
Писал здесь, поэтому могут быть ошибки.
MetalFan (2006-10-25 15:46:00) [3]так изображение уже дб на диске во временной дирестории ие. вот только как узнать где оно?
а как сохранить в файл картинку?
Gero (2006-10-25 15:40:00) [4]> [3] MetalFan © (25.10.06 15:24)
Это был плохой код. Хороший код грузить без надобности не будет.
Через клипбоард очень плохой вариант, так как у пользователя там может быть все, что угодно включая пароль на винду, код к подьезду и пин кредитной карточки.
MetalFan (2006-10-25 15:24:00) [5]
> Gero © (25.10.06 15:17) [2]
>
> Сохранить на диске, потом загрузить в TImage.
видел код, но он снова грузит картинку из инета по ее src...
через клипборд без повторной загрузки...
Gero (2006-10-25 15:17:00) [6]Сохранить на диске, потом загрузить в TImage.
MetalFan (2006-10-25 15:13:00) [7]знаю, как через буфер обмена можно сделать