Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
TWebBrowser.CaptureBitmap No funciona.

Hola a todos.
Otro problema que seguro nadie más que yo ha tenido. La función del título no me funciona.

Seguro que es por que no sé hacerlo.

Bueno. Os cuento:
Código Delphi [-]
Imagen := TImage.Create(Self);
 //Imagen.Bitmap := WebBrowser1.CaptureBitmap;
 if Imagen.BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Canvas.Height.ToString);
         ShowMessage(Imagen.Bitmap.Height.ToString);
       end;

Con este código, Imagen.Bitmap no es nill y ambos mensajes retornan CERO.


Otra prueba:
Código Delphi [-]
 Imagen := TImage.Create(Self);
 Imagen.Bitmap := WebBrowser1.CaptureBitmap;
 if Imagen.BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Canvas.Height.ToString);
         ShowMessage(Imagen.Bitmap.Height.ToString);
       end;

Qué curioso, los dos mensajes retornan CERO.

Tres cosas me quedan claras después de estas pruebas:

1.- Imagen.BitMap, nunca es Nill, no importa si le asignamos el mapa de bits o no.

2.- Que seguramente debe haber algún truco, que yo no conozco, para que esto funcione.

3.- Si nadie se ha quejado de ello. No en la búsqueda de Google, ni en en este foro, ni en el foro de ayuda de Embarcadero es que el INÚTIL SOY YO. ( O nadie lo ha usado)

Por favor si alguien lo ha usado con éxito, que tenga la caridad de decirme cómo se hace.

Gracias de antemano. Y perdón por haberme metido en otro marrón más.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #2  
Antiguo 01-10-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Yo probaría a usar un objeto "TBitmap" en lugar de un objeto "TImage", para empezar. Igual es absurdo, pero, probaría a ver. Por otro lado, comprobaría que el código funciona como se espera en otra plataforma, como pueda ser Windows. Si esto último funciona como se espera, tal vez la captura de la pantalla en Android requiera de algún permiso que la app no tiene.

P.D. Veo que tratas de capturar una imagen de un objeto "TWebBrowser"... ¿estás seguro de que el documento del mismo se ha cargado completamente antes de tratar de capturar una imagen? Supongo que sí, pero, tal vez deberías comprobarlo, puesto que, un documento "no completamente cargado" puede acaso no proporcionar la imagen que se espera.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 01-10-2018
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

He querido probar yo mismo esto usando un TBitmap en lugar de un TImage: funciona en ambos casos como se espera, al menos en Windows. Me tiro a pensar que es una cuestión de permisos... aunque arriba dije que igual estos eran necesarios para capturar la pantalla en Android... ¡pero es que se está tratando de capturar una imagen de un objeto "TWebBrowser" y no la pantalla! En fin, que, probado en Windows y viendo que funciona... lo cierto es que habría que ver porqué no lo hace como se espera en Android.

P.D. Curiosamente, si capturamos la imagen de un "TWebBrowser" vacío, se obtiene el resultado que mencionas de que "Bitmap.Height = 0". Luego insisto en asegurarse de que el documento del "TWebBrowser" ha terminado de cargarse, antes de intentar la captura.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 01-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Muchas gracias. Dec.

Con TBitMap ya lo había probado. Con el mismo resultado.

Voy a ver cómo resuelvo lo de la carga de la página.

Inmediatamente antes tengo este código. Después se muestra la página cuando la solicito.

Código Delphi [-]
 WebBrowser1.Navigate('file://'+TPath.Combine(TPath.GetDocumentsPath, 'Pagina.htm'));
Sleep(5000);

Puede que no le haya dado tiempo de cargarla... Lo había pensado y había puesto el sleep por ése motivo.

Ahora acabo de probar lo siguiente:

Código Delphi [-]
procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject);
begin
  Imagen := TImage.Create(Self);
 Imagen.Bitmap := WebBrowser1.CaptureBitmap;
 if Imagen.BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Canvas.Height.ToString);
         ShowMessage(Imagen.Bitmap.Height.ToString);
       end;
end;

Con idéntico resultado.

Gracias por tus observaciones y por confirmarme que en Windows funciona.

Voy a intentarlo con los permisos, que no se me había ocurrido.

Saludos cordiales.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #5  
Antiguo 01-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola, de nuevo.

No se me ocurre, qué permiso o permisos tengo que activar.

Probando esto:
Código Delphi [-]
procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject);
begin
 BitMap := TBitMap.Create;
 Bitmap := WebBrowser1.CaptureBitmap;
 if BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Height.ToString);
         ShowMessage(Bitmap.Height.ToString);
       end;
end;

el resultado es que no emite ningún mensaje. Lo que está claro es que BitMap es nil. O sea, que no lo carga.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #6  
Antiguo 01-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Hola.

Parece ser que no lo hace hasta que está visible la pantalla.

Pero no me sirve, pues la altura que me da es la altura en pixeles de la pantalla. No parece que capture toda la página web, sino la parte que está visible solamente.

Lo que yo necesito es la altura total de la página web. La de la pantalla ya la sé.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿No funciona el componente "TWebBrowser" en Delphi 64 bits? dec Varios 5 15-09-2016 13:53:03
esta function no me funciona en XE2 y si funciona en D6 darkbits Varios 1 06-11-2012 17:00:45
funciona bien en windows 7 64b pero en XP no funciona ASAPLTDA Varios 5 06-05-2011 16:24:50
TWebBrowser sin URL rafa_adrim Internet 1 20-10-2006 18:02:05
TWebBrowser RoyTan Internet 4 27-10-2003 22:06:09


La franja horaria es GMT +2. Ahora son las 13:23:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi