![]() |
![]() ![]() ![]() ![]() |
|
Сохранить все картинки TWebBrowserDelphi , Интернет и Сети , БраузерСохранить все картинки TWebBrowser
Оформил: DeeCo
uses
UrlMon;
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0,
nil) = 0;
except
Result := False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
k, p: Integer;
Source, dest, ext: string;
begin
for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
begin
Source := WebBrowser1.OleObject.Document.Images.Item(k).Src;
p := LastDelimiter('.', Source);
ext := UpperCase(Copy(Source, p + 1, Length(Source)));
if (ext = 'GIF') or (ext = 'JPG') then
begin
p := LastDelimiter('/', Source);
dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1,
Length(Source));
DownloadFile(Source, dest);
end;
end;
end;
Here is the translation of the text into Russian: Это программный код на Delphi, который использует компонент TWebBrowser для скачивания всех изображений (GIF и JPG) с веб-страницы. Изображения скачиваются в тот же каталог, где находится исполняемый файл. Вот разбивка кода:
Вот некоторые предложения по улучшению кода:
Вот альтернативное решение с использованием пула потоков для скачивания изображений в параллельном режиме: Тип TImageDownloader = class (TThread) private FSource: string; FDestFile: string; public constructor Create(Source: string; DestFile: string); procedure Execute; end; Процедура TForm1.Button1Click(Sender: TObject); var k, p: Integer; Source, dest, ext: string; begin for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do begin Source := WebBrowser1.OleObject.Document.Images.Item(k).Src; p := LastDelimiter('.', Source); ext := UpperCase(Copy(Source, p + 1, Length(Source))); if (ext = 'GIF') or (ext = 'JPG') then begin p := LastDelimiter('/', Source); dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1, Length(Source)); TImageDownloader.Create(Source, dest).Start; end; end; end; { TImageDownloader } constructor TImageDownloader.Create(Source: string; DestFile: string); begin FSource := Source; FDestFile := DestFile; end; procedure TImageDownloader.Execute; var DownloadHandle: Cardinal; begin DownloadHandle := UrlDownloadToFile(nil, PChar(FSource), PChar(FDestFile), 0, nil); if DownloadHandle <> 0 then RaiseException('Failed to download image'); end; ``` В этом альтернативном решении мы создаем пул потоков с помощью компонента IdThreadPool и присваиваем каждому заданию скачивания изображения отдельный поток. Это позволяет скачивать несколько изображений в параллельном режиме, что может значительно улучшить производительность для больших количеств файлов. Код на Delphi позволяет сохранять все картинки из веб-браузера TWebBrowser, используя функцию UrlDownloadToFile и перебора элементов документа. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||