Как сохранить контент UIWebView в библиотеку фотографий - PullRequest
0 голосов
/ 20 июля 2011

Как сохранить содержимое UIWebView в библиотеке фотографий

-(IBAction)save:(id)sender{

    UIImage* image = nil;

    UIGraphicsBeginImageContext(webView.frame.size);
    {
        image = UIGraphicsGetImageFromCurrentImageContext();
    }
    UIGraphicsEndImageContext();

    if (image != nil) {
        UIImageWriteToSavedPhotosAlbum(image,self, nil, nil);
    }

}

Этот код сохраняет пустую страницу.

1 Ответ

1 голос
/ 05 августа 2011

Я выпустил приложение ( Web2Pic ), которое делает это, и, пожалуйста, поверьте мне, UIGraphicsBeginImageContext (webView.frame.size); ничего не могу сделать, кроме как получить маленькое изображение из видимой области в нашем UIWebView; - (

Правильный путь немного сложен, но он просто работает:

1.Используйте JavaScript в нашем UIWebView для получения следующих значений с плавающей запятой:

   //Whole page size in HTML coordinate
   document.body.scrollWidth
   document.body.scrollHeight
   //UIWebView visible size in HTML coordinate
   window.innerWidth
   window.innerHeight

2. Теперь мы можем «разрезать» всю страницу на десятки маленьких кусочков размером с UIWebView. Затем мы можем захватить все маленькие кусочки по отдельности и сохранить их в нашем кеше. Я реализовал это путем вычисления смещений страниц и использую UIGraphicsBeginImageContext (webView.frame.size); , чтобы получить массив изображений. Кроме того, вы должны кешировать массив изображений в файловую систему, иначе приложение в конечном итоге вылетит!

3. Когда мы наконец получили все маленькие кусочки, мы можем начать контекст с полным разрешением: UIGraphicsBeginImageContext (CGSizeMake (document.body.scrollWidth, document.body.scrollHeight));

4.Рендерит каждое маленькое изображение в большой контекст на основе координат. И будьте осторожны с углами , последнее изображение в каждой строке / строке может быть не полным изображением.

5. Остался еще один шаг: сохранение большого изображения. Не сохраняйте его в фотоальбоме , поскольку iOS автоматически урезает разрешение изображений в альбоме. Вместо этого мы можем сохранить его в файловой системе и включить поддержку приложения iTunes File Share в приложении или даже написать простой менеджер фотографий в приложении.

Надеюсь, это поможет; -)

Ичао Пик Цзи

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