Сохранить все картинки 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 прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |