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

Вниз

Как скопировать картинку из TWebBrowser в TImage?   Найти похожие ветки 

 
Jetus ©   (2006-10-25 10:28) [0]

На страничке в моём WebBrowser"e есть несколько картинок. На форме также есть компонент TImage.
Как мне скопировать конкретную картинку из браузера в TImage?


 
MetalFan ©   (2006-10-25 15:13) [1]

знаю, как через буфер обмена можно сделать


 
Gero ©   (2006-10-25 15:17) [2]

Сохранить на диске, потом загрузить в TImage.


 
MetalFan ©   (2006-10-25 15:24) [3]


> Gero ©   (25.10.06 15:17) [2]
>
> Сохранить на диске, потом загрузить в TImage.

видел код, но он снова грузит картинку из инета по ее src...
через клипборд без повторной загрузки...


 
Gero ©   (2006-10-25 15:40) [4]

> [3] MetalFan ©   (25.10.06 15:24)

Это был плохой код. Хороший код грузить без надобности не будет.
Через клипбоард очень плохой вариант, так как у пользователя там может быть все, что угодно включая пароль на винду, код к подьезду и пин кредитной карточки.


 
MetalFan ©   (2006-10-25 15:46) [5]

так изображение уже дб на диске во временной дирестории ие. вот только как узнать где оно?
а как сохранить в файл картинку?


 
Gero ©   (2006-10-25 15:58) [6]

Что-то вроде этого:


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 16:09) [7]

супер) в FAQ бы это... а то чтото не нашел нигде)



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

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.067 c
2-1163795260
Ded222
2006-11-17 23:27
2006.12.03
как удалить файл ?


2-1163327804
lsvit
2006-11-12 13:36
2006.12.03
Работа с exe файлами


2-1163601511
term1t
2006-11-15 17:38
2006.12.03
FastReport


6-1153152312
cando
2006-07-17 20:05
2006.12.03
слежка за портом


15-1163423745
I want Java)
2006-11-13 16:15
2006.12.03
Java