Конвертировать HTML документ в изображение в какао - PullRequest
5 голосов
/ 26 мая 2011

возможно ли преобразовать HTML-страницу в изображение в какао?

На самом деле я создал полное представление в HTML, и теперь я хочу преобразовать весь предварительный просмотр HTML в изображение (любой JPEG или PNG и т. Д.).

Я не смог найти какой-либо ресурс или образец в Интернете, который бы помог мне с моими вышеуказанными запросами. Буду очень признателен, если кто-нибудь поделится своей мудростью о том, как мне этого добиться.

Заранее спасибо ..

Ответы [ 2 ]

7 голосов
/ 13 апреля 2013

Прежде всего, я хотел бы поблагодарить sergio ... его ответ помог мне начать работу, но я решил поделиться некоторыми кодами, которые я не нашел очевидными, которые мне нужно было написать, чтобы заставить его работать:

Вот как сделать миниатюру для страницы без ее отображения:

// 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]];

Затем реализуйте это в своем делегате:

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

Наконец, чтобы отобразить этоthumbnail вам понадобится что-то вроде:

thumbnailImageView.image = [UIImage imageWithData:thumbnailData];

В качестве бонуса, о котором я упомяну, я хотел, чтобы сразу создавалось несколько миниатюр.Я обнаружил, что использование objc_setAssociatedObject() и objc_getAssociatedObject() очень полезно для отслеживания того, какой веб-вид загружает какой эскиз.Однако вдаваться в подробности о том, как это работает, выходит за рамки этого вопроса.

3 голосов
/ 26 мая 2011

Вы можете нарисовать свой вид в контексте изображения, например:

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

Другой вариант - использовать Quartz PDF engine для создания PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...