Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.08.2012, 09:22
ffjeroifjeo ffjeroifjeo вне форума
Прохожий
 
Регистрация: 01.09.2011
Сообщения: 22
Репутация: 10
По умолчанию TChromium получить скриншот

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  
Старый 04.09.2012, 05:41
ffjeroifjeo ffjeroifjeo вне форума
Прохожий
 
Регистрация: 01.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

пробывал в:
- Win7 + XE2 + dcef-r306.7z
- WinXp + XE2 + dcef-r306.7z или dcef-r231.7z или dcef-r275.7z
тоже самое
Ответить с цитированием
  #3  
Старый 05.09.2012, 12:39
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Скачал, установил, посмотрел.
На первый взгляд картина действительно битая, но только на первый. Заходим отладчиком в функцию CefGetBitmap и доходим до строки s := p. После чего смотрим что сохранилось в буфер. Странно, но битмап сохранился не полностью. В моём случае: одна строка нормально, потом несколько пропущено (одни нули), потом ещё строка нормальная, опять несколько пропущено и т.д. Выходит browser.GetImage(typ, w, h, p) косячит, но почему? Может кто-нибудь ещё предположения выскажет.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 08.09.2012, 14:38
ffjeroifjeo ffjeroifjeo вне форума
Прохожий
 
Регистрация: 01.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

всётаки версия 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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025