![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
TChromium как получить скриншот сайта ?
есть такой код: Код:
var
bmp: TBitMap;
begin
bmp:=TBitMap.Create;
CefGetBitmap(Chromium1.Browser, PET_VIEW, bmp);
bmp.SaveToFile('c:\123.bmp');
end;вроде логично, НО получаеться картинка с искажениями, ничего не видно. Функция CefGetBitmap прописана в ceflib.pas, которая ставиться вместе с TCromuim. Прочитал на одном форуме что помогло обновление версии, но у меня последняя. Предыдущую версию пока не пробывал. ссылка на картинку: http://imglink.ru/show-image.php?id=...7d8cd8ecaaa963 |
|
#2
|
|||
|
|||
|
пробывал в:
- Win7 + XE2 + dcef-r306.7z - WinXp + XE2 + dcef-r306.7z или dcef-r231.7z или dcef-r275.7z тоже самое |
|
#3
|
||||
|
||||
|
Скачал, установил, посмотрел.
На первый взгляд картина действительно битая, но только на первый. Заходим отладчиком в функцию CefGetBitmap и доходим до строки s := p. После чего смотрим что сохранилось в буфер. Странно, но битмап сохранился не полностью. В моём случае: одна строка нормально, потом несколько пропущено (одни нули), потом ещё строка нормальная, опять несколько пропущено и т.д. Выходит browser.GetImage(typ, w, h, p) косячит, но почему? Может кто-нибудь ещё предположения выскажет. |
|
#4
|
|||
|
|||
|
всётаки версия dcef-r306.7z глючит работа со скриншотами. Ещё раз поставил dcef-r231.7z всё заработало. Использую код:
Код:
function CefGetBitmap(const browser: ICefBrowser; typ: TCefPaintElementType; Bitmap: TBitmap): Boolean;
var
w, h, i: Integer;
p, s: Pointer;
begin
browser.GetSize(typ, w, h);
Bitmap.PixelFormat := pf32bit;
{$IFDEF DELPHI12_UP}
Bitmap.SetSize(w, h);
{$ELSE}
Bitmap.Width := w;
Bitmap.Height := h;
{$ENDIF}
GetMem(p, h * w * 4);
try
Result := browser.GetImage(typ, w, h, p);
s := p;
for i := 0 to h - 1 do
begin
Move(s^, Bitmap.ScanLine[i]^, w*4);
Inc(Integer(s), w*4);
end;
finally
FreeMem(p);
end;
end;инструмент: WinXP + Delphi XE2 Последний раз редактировалось Admin, 09.09.2012 в 19:40. |