2011-05-26 12 views
5

es posible convertir la página HTML a la imagen en el cacao?convertir doc html a la imagen en el cacao

De hecho, he creado la vista completa en el HTML y ahora quiero convertir toda la vista previa html en la imagen (cualquier JPEG o PNG, etc.).

No pude encontrar ningún recurso o muestra en la web, lo que proporciona algún tipo de ayuda sobre mis consultas anteriores. Es muy apreciado si alguien pudiera compartir su sabiduría sobre cómo puedo lograr esto.

Gracias de antemano ..

+0

Qué le gusta hacer esto en iOS? –

Respuesta

7

En primer lugar, me gustaría dar las gracias a Sergio ... su respuesta me empezó pero yo pensé en compartir una parte del código que yo no encontrar obvio que tenía que escribir para que funcione:

Aquí es cómo hacer una miniatura de una página sin tener que aparece:

// Your width and height can be whatever you like, but if you want this to render 
// off screen, you need an x and y bigger than the superview's width and height 
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(largerScreenDimension, largerScreenDimension, largerScreenDimension, largerScreenDimension)]; 
[self.view addSubview:webView]; // UIWebViews without an assigned superview don't load ever. 
webView.delegate = self; // or whoever you have implement UIWebViewDelegate 
webView.scalesToFit = YES; // This zooms the page appropriately to fill the entire thumbnail. 
[webView loadRequest:[NSURLRequest requestWithURL:url]]; 

luego implementar esto en su delegado:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    UIGraphicsBeginImageContext(webView.bounds.size); 
    [webView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *webViewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *thumbnailData = UIImagePNGRepresentation(webViewImage); 
    [webView removeFromSuperview]; 
} 

Finalmente, para mostrar en esta miniatura te Necesito algo como:

thumbnailImageView.image = [UIImage imageWithData:thumbnailData]; 

Como bono cosa que voy a mencionar, quería varias imágenes en miniatura que se generen a la vez. Encontré usar objc_setAssociatedObject() y objc_getAssociatedObject() para ser muy útil con el seguimiento de qué webView estaba cargando qué miniatura. Sin embargo, entrar en detalles sobre cómo funcionó está más allá del alcance de esta pregunta.

+0

Gran respuesta. Solo hay una pequeña cosa que no puedo hacer. No quiero que la imagen esté en la proporción que sea. así que traté de desactivar scaleToFit y poner mi propio ancho y alto en initWithFrame. Sin embargo, ahora obtengo una imagen vacía. ¿Algunas ideas? Gracias – hishamaus

+0

@hishamaus: si tienes más preguntas, deberías publicarlas por separado, creo. Últimamente no he trabajado con Obj-C, así que no estoy seguro de cómo responder a tu pregunta. – ArtOfWarfare

3

Puede llamar la vista en un contexto de imagen, como esto:

UIWebView* view = ... 
.... 
UIGraphicsBeginImageContext(view.bounds.size);  
[view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData *imagedata = UIImagePNGRepresentation(viewimage); 
NSString *encodedString = [imageData base64Encoding]; 

Otra opción sería usar el motor PDF cuarzo para crear un archivo PDF.

+0

En realidad estoy tratando de usar la imagen como miniatura en el complemento QuickLook, por lo que no es posible usar webview. Gracias de antemano .. –

+0

@Vinaj Jain: Me puso en su lugar un 'UIWebView' porque usted dijo "He creado la vista completa en el HTML y ahora quiero convertir toda la previsualización de HTML". Supongo que esto es lo que tienes. Mi código creará un 'UIImage' que puedes poner en tu complemento y funcionará con cualquier vista que puedas dibujar en la pantalla. – sergio

+0

okkk ... Voy a tratar ... muchas gracias por su ayuda ... –