Я выпустил приложение ( 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 , или даже написать простой менеджер фотографий в приложении.
Надеюсь, это поможет; -)
Ичао Пик Цзи