在UIWebView网页里要获取img标签的图片,网上的方法都是通过获取到URL然后自己再下载一遍,耗流量、耗时间、不能通过验证。
这里是利用UIWebView的stringByEvaluatingJavaScriptFromString函数,执行一段js,返回图片数据。
流程为:
- 获取img标签,可以用各种方法,ById,ByTags,elementFromPoint等。
- 创建canvas标签,创建context,把canvas设置成和图片一样大
- 把img画到context里
- 返回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