Miguel Angel Torres Master


Registrado: 23 Abr 2006Mensajes: 282Ubicación: Siegen, Alemania
|
Publicado: Jue 17 Ene, 2008 6:07 pm Asunto: Problema con la obtención de una imagen de una URL |
|
|
Estoy tratando de sacar la imagen de una cierta página de internet y hasta aqui todo va bien, con un código que encontré aquí en el foro puedo realizar esto. Ahora lo que pasa es lo siguiente, la imagen de esa URL viene de una cámara, ahora si abro el internet explorer con esa dirección, la imagen aparece, si uso el código de obtener la imagen pues este funciona, pero el detalle es que si lo hago en un ciclo siempre me está capturando la misma imagen que capturó por primera vez, apesar de que esta está cambiando continuamente. La única forma para que me cambiara la imagen que hallé es dándole REFRESH a la página y así si me cambia la imagen. El problema es que esto hace sumamente lento el pc, porque cada vez tiene que hacer refresh de la página, capturar la imagen y procesar muchos algoritmos apartir de estas imagen obtenida y hasta a veces se me cierra el IE y quedo totalmente muerto porque ya no pudo obtener la imagen y me bloquea el programa. Quisiera saber si alguien tiene alguna sugerencia a este problema.
El código para cargar la imagen es:
| Código: |
void TForm1::CargarImagen(TImage *imagen,String nombreFichero)
{
// Formats: BMP, GIF, JPG, ICO, EMF, WMF
const int HIMETRIC_INCH = 2540;
IPicture *pPicture = NULL;
OleLoadPicturePath( StringToOleStr(nombreFichero),
NULL, 0, 0, IID_IPicture, (void**)&pPicture);
// Charge the image in the TImage
if (pPicture)
{
imagen->Picture = NULL;
long ancho, alto;
pPicture->get_Width(&ancho);
pPicture->get_Height(&alto);
imagen->Picture->Bitmap->Width = MulDiv(ancho,
GetDeviceCaps(imagen->Canvas->Handle, LOGPIXELSX), HIMETRIC_INCH);
imagen->Picture->Bitmap->Height = MulDiv(alto,
GetDeviceCaps(imagen->Canvas->Handle, LOGPIXELSY), HIMETRIC_INCH);
RECT rect = imagen->ClientRect;
pPicture->Render(imagen->Canvas->Handle, 0, 0,
imagen->Picture->Bitmap->Width, imagen->Picture->Bitmap->Height,
0, alto, ancho, -alto, &rect);
pPicture->Release();
}
}
|
El código para hacer Refresh de una página web es:
| Código: |
void TForm1::update()
{
CoInitialize(0);
IShellWindows* sw = 0;
HRESULT hr = CoCreateInstance(CLSID_ShellWindows, 0,
CLSCTX_SERVER, IID_IShellWindows, (void**)&sw);
if (SUCCEEDED(hr))
{
long count = 0;
sw->get_Count(&count);
for (int i = 0; i <count>Item(TVariant(i), &disp);
IWebBrowser2* ie = 0;
disp->QueryInterface(IID_IWebBrowser2, (void**)&ie);
disp->Release();
if (ie)
{
// Aquí podríamos comprobar por ejemplo la URL
// para decidir cuales actualizar y cuáles no
ie->Refresh();
ie->Release();
}
}
sw->Release();
}
CoUninitialize();
}
|
Y estos son los encabezados que uso:
| Código: |
#include <float>
#include <math>
#include<exdisp>
#include<mshtml>
#include<utilcls>
|
_________________ Entre más sé, sé que nada sé
----------------------------------
Miguel Angel Torres Arredondo
Siegen - Deutschland |
|