利用javascript和canvas获取UIWebView网页里的图片(不用再下载)

在UIWebView网页里要获取img标签的图片,网上的方法都是通过获取到URL然后自己再下载一遍,耗流量、耗时间、不能通过验证。

这里是利用UIWebView的stringByEvaluatingJavaScriptFromString函数,执行一段js,返回图片数据。

流程为:

  1. 获取img标签,可以用各种方法,ById,ByTags,elementFromPoint等。
  2. 创建canvas标签,创建context,把canvas设置成和图片一样大
  3. 把img画到context里
  4. 返回canvas或context里的数据

前3步是必须的,第4步可以有两种方式,返回context的RGBA数据,或者返回canvas的dataURL(整个图片以base64编码)。

第一种返回方式:

function() {
	var img = document.getElementById("myimg");  // 可改成document.getElementsByTagName('img')[0]
	var canvas = document.createElement("canvas");
	var context = canvas.getContext("2d");
	canvas.width = img.width;
	canvas.height = img.height;
	context.drawImage(img,0,0,img.width,img.height);
	var imageData = context.getImageData(0,0,img.width,img.height);
	var dataArray = new Array(imageData.data.length);
	for(var i = 0; i < dataArray.length;i++)
		dataArray[i] = imageData.data[i];
	return dataArray.toString();
}

返回的数据格式是 rrr,ggg,bbb,aaa,rrr,ggg,bbb,aaa,rrr,...  把这些数据传到CGBitmapContext里再转成CGImage

时间: 2024-07-29 09:37:32

利用javascript和canvas获取UIWebView网页里的图片(不用再下载)的相关文章

JavaScript实现简单获取当前网页网址的方法_javascript技巧

本文实例讲述了JavaScript实现简单获取当前网页网址的方法.分享给大家供大家参考,具体如下: 这里演示使用JavaScript取得当前网页的网址,是一个比较有用的功能,点击"运行"查看效果吧. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-show-nav-url-codes/ 具体代码如下: <html> <head> <title>取得目前页面页的网址</title> &

网页里控制图片大小的相关代码_JavaScript

1.用鼠标拖动来改变大小 <SCRIPT LANGUAGE="JavaScript">function resizeImage(evt,obj){newX=evt.xnewY=evt.yobj.width=newXobj.height=newY}</script><img src="7say.gif" ondrag="resizeImage(event,this)"> 2.用鼠标滚动控制图片大小 <img

利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域

 这篇文章主要介绍了利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域.需要的朋友可以过来参考下,希望对大家有所帮助 原理就是循环获取网页上的控件,然后设置disabled 属性为true.   代码如下:   代码如下: <script type="text/javascript">     var nodeList = document.getElementsByTagName("input");     for (var i =

php获取网页里所有图片并存入数组的方法

 本文实例讲述了php获取网页里所有图片并存入数组的方法.分享给大家供大家参考.具体如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $images = array(); preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media); unset($data); $data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"

JavaScript获取当前网页最后修改时间的方法_javascript技巧

本文实例讲述了JavaScript获取当前网页最后修改时间的方法.分享给大家供大家参考.具体如下: 下面的JS代码输出当前网页最后修改时间,用到了document.lastModified属性 <!DOCTYPE html> <html> <body> This document was last modified on: <script> document.write(document.lastModified); </script> <

ios-IOS怎么从已知的url获取该网页body里的数据信息并分离出来

问题描述 IOS怎么从已知的url获取该网页body里的数据信息并分离出来 IOS怎么从已知的url获取该网页body里的数据信息并分离出来 解决方案 用NSURLSession获取http请求返回的数据

javascript实现PC网页里的拖拽效果_javascript技巧

几年前,我参与设计开发一个房产网的项目,我负责前端工作,由于项目经理要求比较高,参考了很多房产类网站比较优秀的功能,想把别人比较优秀的设计和想法集合到一起,那时的设计稿和功能实现,简直就是改了又改,今天做好的一个很好的效果,可能第二天就要推到重来,算了,不说这些了,还是说说我们今天要讲解的案例吧,不知道大家访问过搜房网没有(完全没有做广告之嫌,搜房网,可以给点广告费不),其中有一个功能产品经理特别喜欢,那,就是下面的这个: 这是现在的效果,可能改了一些,原来的效果是,里面的这张图是可以上下左右拖

JavaScript获取当前网页标题(title)的方法_javascript技巧

本文实例讲述了JavaScript获取当前网页标题(title)的方法.分享给大家供大家参考.具体如下: JS中的document.title可以获取当前网页的标题 <!DOCTYPE html> <html> <head> <title>jb51.net</title> </head> <body> current document's title is: <script> document.write(do

前段开发-请问如何在有iframe框架的网页里实现父子文档互相访问,分别用javascript和jquery实现

问题描述 请问如何在有iframe框架的网页里实现父子文档互相访问,分别用javascript和jquery实现 请问如何在有iframe框架的网页里实现父子文档互相访问,分别用javascript和jquery实现 解决方案 搞懂关系就很简单了iframe和父页,window.open打开页面之间的引用 解决方案二: window.parent.find('iframe'). 解决方案三: 能再详细点吗,各位大牛哥哥 解决方案四: http://www.cnblogs.com/luluping