搜索
查看: 1891|回复: 5

miniblink使用ArrayBuffer直接获取图像数据

[复制链接]

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-7-15 19:58:04 | 显示全部楼层 |阅读模式
上次发过《webkit,miniblink获取网页上的图像二进制数据》:
http://bbs.aardio.com/forum.php?mod=viewthread&tid=22320
该代码是使用base64获取图像数据,使用这种方式 - 如果图像大一点速度就慢了。

下面我们改用ArrayBuffer缓冲区以及getImageData获取图像数据,代码如下:
import win.ui;
/*DSG{{*/
mainForm = win.form(text=
"miniblink - 获取img元素的数据";right=1108;bottom=716)
mainForm.add(
picturebox={cls=
"plus";left=958;top=571;right=1246;bottom=670;edge=1;foreRepeat="stretch";repeat="center";transparent=1;z=1}
)
/*}}*/

import web.blink.form;
var mb = web.blink.form(mainForm);
mainForm.show();

mb.go(
"http://bbs.aardio.com");
mb.wait();

var img = mb.querySelector("#hd img");
var canvas = mb.document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;

var ctx = canvas.getContext("2d");
ctx.drawImage(img,0,0,canvas.width,canvas.height);
var imageData = ctx.getImageData(0,0,canvas.width,canvas.height)

import gdip.bitmap;
var bmp = gdip.bitmap(canvas.width,canvas.height);
var data = bmp.lockMemory(,0x26200A/*_PixelFormat32bppARGB*/)
data.Scan0 = mb.jsSwapImageBuffer(imageData.data.buffer)
bmp.unlockMemory(data);

mainForm.picturebox.orphanWindow();
mainForm.picturebox.background = bmp;

win.loopMessage();



回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
 楼主| 发表于 2018-9-14 14:17:57 | 显示全部楼层
封装了一个获取图像的函数:
import win.ui;
/*DSG{{*/
mainForm = win.form(text=
"miniblink - img转gdip.bitmap";right=1108;bottom=716)
mainForm.add(
picturebox={cls=
"plus";left=958;top=571;right=1246;bottom=670;edge=1;foreRepeat="stretch";repeat="center";transparent=1;z=1}
)
/*}}*/

import web.blink.form;
var mb = web.blink.form(mainForm);
mb.go(
"http://bbs.aardio.com");

import gdip.bitmap;
mainForm.picturebox.orphanWindow();
var img = mb.waitQuerySelector("#hd img");
mainForm.picturebox.background = mb.createGdipBitmap(img);

mainForm.show();
win.loopMessage();


回复

使用道具 举报

9

主题

17

帖子

103

积分

一级会员

Rank: 2

积分
103
发表于 2018-7-16 00:11:16 | 显示全部楼层
提示第28行错误,什么原因。
提示第28行错误,什么原因。
提示第28行错误,什么原因。
回复

使用道具 举报

3

主题

50

帖子

421

积分

培训班

积分
421
发表于 2018-7-16 00:15:44 | 显示全部楼层
jghua 发表于 2018-7-16 00:11
提示第28行错误,什么原因。
提示第28行错误,什么原因。
提示第28行错误,什么原因。

先更新 web.blink扩展库 ...这不是常识么
失败的话 aardio\lib\web\blink 删掉重新安装web.blink扩展库
回复

使用道具 举报

9

主题

17

帖子

103

积分

一级会员

Rank: 2

积分
103
发表于 2018-7-16 02:19:36 | 显示全部楼层
nlysh007 发表于 2018-7-16 00:15
先更新 web.blink扩展库 ...这不是常识么
失败的话 aardio\lib\web\blink 删掉重新安装web.blink扩展库

可以了,谢谢,初学者,非常感谢。
可以了,谢谢,初学者,非常感谢。
回复

使用道具 举报

1

主题

15

帖子

136

积分

一级会员

Rank: 2

积分
136
发表于 2018-7-16 10:32:56 | 显示全部楼层
厉害啊,学习了,感觉会有很大用途!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-14 01:41 , Processed in 0.062500 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表