Commit 26f939a2 authored by wang's avatar wang

获取webgl2 渲染

parent 0296b342
...@@ -16,4 +16,4 @@ def collect(): ...@@ -16,4 +16,4 @@ def collect():
return 'ok' return 'ok'
if __name__ == '__main__': if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True, port=11222) app.run(host='0.0.0.0',debug=True, port=11221)
\ No newline at end of file \ No newline at end of file
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
// } // }
var compressString = function(S) { var compressString = function (S) {
let nums = S.split(",") let nums = S.split(",")
let str = '' let str = ''
let i = 0 let i = 0
...@@ -52,10 +52,14 @@ var compressString = function(S) { ...@@ -52,10 +52,14 @@ var compressString = function(S) {
while (nums[i] == nums[j]) { while (nums[i] == nums[j]) {
j++ j++
} }
str = str+'-' + nums[i] + '|' + (j - i) if ((j - i) !== 1) {
str = str + '|' + nums[i] + '-' + (j - i)
}else{
str = str + '|' + nums[i]
}
i = j i = j
} }
res = str.length>=S.length?S:str res = str.length >= S.length ? S : str
return res return res
}; };
......
This diff is collapsed.
...@@ -695,7 +695,7 @@ for (let i = 0; i < glARgs.length; i++) { ...@@ -695,7 +695,7 @@ for (let i = 0; i < glARgs.length; i++) {
console.log(glArgs) console.log(glArgs)
delete canvas
let navigatorParams = { let navigatorParams = {
appName: navigator.appName, appName: navigator.appName,
appVersion: navigator.appVersion, appVersion: navigator.appVersion,
...@@ -862,7 +862,8 @@ function canplay() { ...@@ -862,7 +862,8 @@ function canplay() {
} }
let userAgentData; let userAgentData= {};
let webglImg = '';
setTimeout(function (){ setTimeout(function (){
let result = { let result = {
windowParams: windowParams, windowParams: windowParams,
...@@ -876,7 +877,8 @@ setTimeout(function (){ ...@@ -876,7 +877,8 @@ setTimeout(function (){
jpg: getDataUrl(), jpg: getDataUrl(),
jpg2: getDataUrl2(), jpg2: getDataUrl2(),
canPlay: canplay(), canPlay: canplay(),
userAgentData: userAgentData userAgentData: userAgentData,
webglImg: webglImg,
} }
fetch("/collect", { fetch("/collect", {
...@@ -899,7 +901,7 @@ setTimeout(function (){ ...@@ -899,7 +901,7 @@ setTimeout(function (){
}, 1000) }, 1000)
navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform', navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform',
'platformVersion', 'uaFullVersion', 'wow64', 'fullVersionList']).then(e => { 'platformVersion', 'uaFullVersion', 'wow64', 'fullVersionList']).then(e => {
userAgentData= {};
userAgentData['highValue'] = e userAgentData['highValue'] = e
userAgentData['brands'] = navigator.userAgentData.brands userAgentData['brands'] = navigator.userAgentData.brands
userAgentData['mobile'] = navigator.userAgentData.mobile userAgentData['mobile'] = navigator.userAgentData.mobile
...@@ -909,3 +911,71 @@ navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['archit ...@@ -909,3 +911,71 @@ navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['archit
}) })
webglImg = function (){
let canvas = document.createElement("canvas");
canvas.width = 150;
canvas.height = 150;
let ctx = canvas.getContext('webgl2');
let shader = ctx.createShader(35633);
ctx.shaderSource(shader,'\n attribute vec4 aPosition;\n attribute vec4 aColor;\n uniform vec4 anOffset;\n varying vec4 vColor;\n void main(void) {\n gl_Position = aPosition + anOffset;\n vColor = aColor;\n }\n ');
ctx.compileShader(shader);
let shaderParam1 = ctx.getShaderParameter(shader, 35713);
let shader2 = ctx.createShader(35632);
ctx.shaderSource(shader2,'\n precision mediump float;\n varying vec4 vColor;\n void main(void) {\n gl_FragColor = vColor;\n }\n ');
ctx.compileShader(shader2);
let shaderParam2 = ctx.getShaderParameter(shader2, 35713);
let program = ctx.createProgram();
ctx.attachShader(program, shader);
ctx.attachShader(program, shader2);
ctx.linkProgram(program);
let programParam1 = ctx.getProgramParameter(program, 35714);
let buffer1 = ctx.createBuffer();
ctx.bindBuffer(34962, buffer1);
var bl_27 = [0, 0.5, 0.699999988079071, -0.6000000238418579, -0.4000000059604645, -0.800000011920929];
var bl_0 = [0.30000001192092896, 0.699999988079071, 0, 1, 0.10000000149011612, 0, 0.8999999761581421, 1, 0.8999999761581421, 0, 0, 1];
let Float32Array1 = new Float32Array(bl_27);
ctx.bufferData(34962, Float32Array1, 35044);
let buffer2 = ctx.createBuffer();
ctx.bindBuffer(34962, buffer2);
let Float32Array2 = new Float32Array(bl_0);
ctx.bufferData(34962, Float32Array2, 35044);
let attribLocationAPosition = ctx.getAttribLocation(program, 'aPosition');
let attribLocationAColor = ctx.getAttribLocation(program, 'aColor');
ctx.bindBuffer(34962, buffer1);
ctx.vertexAttribPointer(0, 2, 5126, false, 0, 0);
ctx.enableVertexAttribArray(0);
ctx.bindBuffer(34962, buffer2);
ctx.vertexAttribPointer(1, 4, 5126, false, 0, 0);
ctx.enableVertexAttribArray(1);
ctx.useProgram(program);
let webglUniformLocation = ctx.getUniformLocation(program, 'anOffset');
ctx.uniform4fv(webglUniformLocation, [0.2, 0, 0, 0])
ctx.drawArrays(5,0,3)
let unint8Array = new Uint8Array(90000);
ctx.readPixels(50, 0, 100, 128, 6408, 5121, unint8Array);
var compressString = function (S) {
let nums = S.split(",")
let str = ''
let i = 0
while (i < nums.length) {
let j = i + 1
while (nums[i] == nums[j]) {
j++
}
if ((j - i) !== 1) {
str = str + '|' + nums[i] + '-' + (j - i)
}else{
str = str + '|' + nums[i]
}
i = j
}
res = str.length >= S.length ? S : str
return res
};
return compressString(unint8Array+'')
}()
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
...@@ -3046,9 +3046,9 @@ class HTMLCanvasElementImpl extends HTMLElementImpl { ...@@ -3046,9 +3046,9 @@ class HTMLCanvasElementImpl extends HTMLElementImpl {
} }
readPixels(x, y, width, height, format, type, pixels) { readPixels(x, y, width, height, format, type, pixels) {
// for (let i = 0; i < pixels.length - 1; i++) { for (let i = 0; i < pixels.length - 1; i++) {
// pixels.fill(parseInt(Math.random() * 210 + 10), i, i + 1) pixels.fill(parseInt(Math.random() * 210 + 10), i, i + 1)
// } }
v_console_log(' [*] WebGLRenderingContext -> readPixels[func]', x, y, width, height, format, type, pixels) v_console_log(' [*] WebGLRenderingContext -> readPixels[func]', x, y, width, height, format, type, pixels)
} }
......
const Canvas = require('canvas') const {Canvas, Image} = require('canvas');
const canvas = new Canvas(150, 150, 'image');
let res = {};
const img = new Image();
let sss = [ img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAD0VJREFUeF7tnWusFVcVgPc8YvzRRI3+0PhMLFFTm7SxGhslmZOa2FhrUaiWUFKaQgqhBAjUQCjClKbQUFtSWiGhDyyGNtBCDVd6S6/cAZFeARHaK+ItUgL3B74SYojRes8ZM2dmzrz2Y+05s+fOObP4RcicPees/bHW2uu1NYJ/UAIKJKApWBOXRAkQBAshUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBAsZUCIBBEuJWHFRBKsEBqbtJdYE0a2B77fWlvC6SrwCwSphG+7YS4ZbrmG5rmEPTH+/FnAhWCWANe1VzW0Rg7RcgwzM+G8tZF6LH1kCO8xXzNhNrCbRhz2wmq4Hl2nv/9HVvtdaCJZi6mbs8s1gB6w2YGZjcOYVR/GrJ3V5BEux+O98SfO0ldUMTKEHmKsZzq9mXmkofvWkLo9gKRT/XS8Rq9UKzGAMrAAye3D2P/rWJCJYKsHaQSxXMzxTSOIaK/z76/f8vW/l37c/TCEv4KVn7dCGm65htZ12T2OFDjzR2yfEFjHswXsv96XWQrDAmMg/OGu73g4zRGDpsb93/t0+cN9438GFYMnzAvrEnBeINeEaw77Z031tlfWz2v/+xrxLfbcPffeDQLtewkP3PBueBjtmjwlWi5j2gfvP95XWQrAUQTZnm+Z2TGDovDM0VluTtUx7aOFY38CFYCkAa+4WYjV13XPcU067n9ZpgxRAFv/7mw+M9c1+9M0PUcBH7iXnbiGeb2UFJ7/YaTB+MsxC1nINe2jxmb7QWghWbnzYH5z3jOayHHXWv4eajLhaY2jpaM+nexCsgsGavzlKOocaCwZZ4ORrpvPrpad7Pt2DYBUM1oLNZLjZ8pPOPH8q8q2yoQjPJB588GRPm0QEq2CwFm7ShieCaoZEcDTjtPtAseA7+OPf9/Te9PSXL5iJrpd74ElitVy9nRvkBUS9gCnrZBj+u+ua9sGVIz2rtRCsrnGKFliykVj/C5LOdLAoEXhaSKIT7zJtZ9WRnoQLwSoQrMUb/aRz1rxFZo+nyWhxL2f1kZ7co5780gWyUOhSizf4SecILP+kJzJ76WfivplLDNtZ4/Sc1kKwCkJr+Xo/6RxpJL5zDgdOJ56/dfjhoZ6CC8EqCKxlj2rDrXaYIXDMaQ48x5+ia7XIyT+8bqin9qqnvmxBDChZZvk6zRWdBhOBUgZkvp8VOPmxZ7yexMOPDvaM1kKwCsBsxVpiNTU/zADxpzIOfAcgaiFgJ9foEqNxZMNAT6R7EKwiwFpD2p04ULCy8MWcfJ4m0wznyGP7eiLdg2AVANbK1X6nM8TUJeETB0qzjRimffTxPZU3iQhWl2A99FAQbeeUHlPrsjwnX9qZ9+H97RN7Kr9vlf+CXe678o+vXkXap0GWb5UNiMZKlbkOfKp2K9GUYdhHN+2qtNZCsLpEb82KoMWLURUar2LgwicFmWdCTXvkqZ2VhQvB6gKstSuI5bb0oBOHXm7swyQZgafEwPxofBB0DbTXW8/srOz+VfaLdbHfpX103XKvqC9s8aJUNKRACJtWpU6PQVyLWiyoGfbIz16spNZCsLrAcN2yIOmc6b6BVzGIHfhsKCIBmWbYx7Y+Xzm4EKwuwHpkie7XtncSz+L8YLIzOt4lnf570uwlW/T9RHd4MPjdtucqt4+V+0Jd7HOpH12/xJskE5jBoNsZEnXPPJPxp7LpHJZWi/oWTfvY81srpbUQrJw4blikBS1efBDk/Cl+K37cBGY1n9k4sf3pyqR7EKycYD22kNPiJRU68Gc7iDUZe/ZD8Fnn+M+frky6B8HKAdbG+cRqeUlnQSeO2J8Cmj1BDX00eMS0T/xiUyVMIoKVA6wn7ifDE17SGdzildY2UfRdDB+/e7oZlNiEzvzxnZsqsaeV+BI59nZSP/LTecF47WSaBVCGLAgdxMIWYuDoQVevlPnEy49PutZCsCQRfXIusVxvvHZonsD+FCcUATJ1YXiBoe3itWDEsE/u2jCpcCFYkmA9dR/pdOLASmX4xXu8+FS2IpVT9hwP0roGOfnq+knd20l9ueSeVuLxzXPCMIOgWpSRzhHGpOLmtaOFsmaP20bmjfwmpn1yz8OTprUQLAlcN88hFgnGa/PjUymzJ+qMTvlq1JmlwLLneNiipRn2qdfWTApcCJYEWFvu9pPObMc6afao8IH8KcqgEKomEw8eObXvJ5Oyx5PyUom9rNSjW2ZpmetLaOUsGb+JpZGokIlnlrJKoGllz66ntQZWla61ECwJdLfO1NstXpniPfDJkFMVyhkUIvKnsifUpOaccLXG6ODKUtM9CBYQrG13ebXtsVsmWMV70v4UpYohjz/Vrrmnlz23iOmcfuPBUtM9CBYQrGfvDMZryxTvcSFjhw74c7Volarsbp9wLZfo9ttDy0oziQgWEKznpgctXpJmj36PDryKQexPwcue3z64tLT9Lu1FwP2r5GMvzCCW20zVtjNDBIDiPcjcd9HpERAno5xK7VFnUSlaC8ECoPziND/aLlvaEpk0ThUD0J9KT7GBNMfSgrFeLnH08ALlcCFYELC+5w/84FaI5gwdwP2p4sqeR4/MV77vyl8A2LdKP7Lju8QihHHLBKu6gddZw+uYTuX7oq4eiVb8eCkPq+yZGPaZo/OUai0ES4D1S7cFZhDstKfMXlf+FLAQUFgXlk0xeYHTMyP3KoMLwRKBdWuUdOYFKtsD10TwicxpR2PJD29jvzuKk6XN+Znjc5Ttv7KFK23fgF9u963EaoadzkwTAw8diP0peOhAXLID0Haabp89MVuJ1kKwOJDt/laUdE4nnv3//ZJ5Pda1crEpfsJDAsTsiTRnzDd0Xb1x9tTMwtM9CBYHrFduiXU6i6/gzZQmw3J8MLMHA06+28dL95w9/cPC0z0IFg+shp90jqoVBN3JUqUtktqOq4XEoQjBRVH22Oj0Qk0igsUAa68VJZ25k5ClGiAYPYSQNjJqKAJwYOCGRKLuoT+f+UGhLBS6GNAn7onHXpvqJ50TI4hEaRbe1by0FAzwlJh7ZmkwV4J/Wu1oTnvs7B2FaS0Ei4H5L79Bb/FiXcfL96cAZi9m6qTKnrkB0WQ/Y/IAQtV29rmx2wqBC8GigLXvm37SGVwJyvStks40zJlnJbEBZc8gyPjhkXfPfacQJgpZpCdsm8SX3P/1oMWLk37hN5QCnWmKb5WNT0kcGIT+lFhztohunzv/7a61FoJFAW7/1wIzGPpAYN8qGToQB0R5zRDs0IG4SzpdAh3TdpAUE9Ht8xdu6QouBCsF1us3+Uln5uYxIYNH4ON+Gt2fAkTgQSXQ4uFtrIqNv1xqdMVGVx+WsC498+iBrxBGJ048nkWf4gf2oRhVDOnhtVF1g2zJDrDsmRN383oSz49Pza21EKwU8m/eENS2C+NT/CoG+Nx3P7Ylb96STn5UAi2hORnhkShdZTYuXL45V7oHwYqBNXyDn3TOEzrI50/Rnfx8kIm7feAatePkO+/99eZc6R4EKw7Wl72BarEWL0qhnCA1kr1knBqfAvhQgtABqOxZKsUU05xxba0Z9oW/fVXaJCJYMbCc68IWr7Q/JT+Ug3p3YayKQTyGm3FiTMDON3u8A4jMtOcL/7xJmhPpD/SMF57jix76kn+nM3Uoh/T//vSFAimHWqK0JVuyAxxnxE0xwW/McF3dvnDlRimthWAFAP7mi8Ry3fCWCQlNIMz38c2enD8F7/YR+1OU38iA3de+un3xX9eD4UKwArCOTvFLkLsq3kv4U0U1QPiaRVj2DNao0YGBCx8FsotXrwPzAn4wh2XpqY8cvVZzo4H8ybiR+H8/xewBTJ2weE+i20fsT8EPDKyyZ68n8eK/vwDSWggWIeSta/2BaqzKBciNE/5mMHJxAMiy0Xi54W3s02psZqnQbIvmbenEmwEx/p8pQrgQLELIsc+R4JYJSnQdZGJgZg/mTwHMXs7cJaR7GpJiGn//80JuhA/0lD3L+WWPf4Zzy4QoOi1sbuDcY0gJHcDgi51cqVpIXMUAgczXotkDg2cSxyc+y9VatQfrD58i1kSQdKbGnphHdvEVvEIfKn65E1gL5RveBk4xdcw2X3M2Xa1xmXyame5BsD4Z1V5BQZA9TbG1EMOhloAsuu4kVS2a25/KXnIQfH/HJcYhT4NNENMZ50DlGY7ag3XqE4wWr8zGyBXvgQoBIaOQhJABzB4nPpUee+kS02m62qEWMYnXGjZKrscktKyL9c7HidV0Y7dMUM0e/JgunkbDKQQEQpaZfyqMrqfu8UnmLp1moIVaRHdGyNRcENHkXmuN9c7HoqQz3bzJRafZYOUPHWQ1n5zmDK+cc1090EK6M0huLwwg1n/mWoM1+tGgxYtj9rr3p9hDOeQqJTjFe7Hv77qm0ySRKXuFFN8+D7EMtQbrjx/xk86R057P7NH9qRzFe3Jlz07LDZ1p3dlOFinXQhCgwmdqC9afPuwnndMRc9jJkFcq3MVdhJlgbGj2PC3kmTKdEGI6m0i5M9tlgKo9WGMf0oabLb/TmWmSQKepELJ8oYOktvNOZMYhNzjSP0I2VEoLyQBWW401do0/VxScYAYM5RB23yTf5zSJGcSFdGcl2dqzEOGpMJDAu9cEt3gBg4isbD+wnMWZaPtCXlxIdxaQl/sKIDwVxiRw/oPEH/gBBEtiKIfTaseFzHZ0ejYZqAVEqLECCbz3geCWCWZ/X1TlQL2UiRhO0/XNmKeFbicjtQUINVYggUumN/5R0OKV9Kdi0WnTaZBRhAjgxdfOeb9k+J3OafPm58j8uJCXI7uRjCNAAIBQYwUSGNfal1mS8ETmmbIp5CpC1AVE6GMVLDxcji2B2plChKEcCSBY5ci5dm9BsGq35eX8YASrHDnX7i0IVu22vJwfjGCVI+favQXBqt2Wl/ODEaxy5Fy7tyBYtdvycn4wglWOnGv3FgSrdltezg9GsMqRc+3egmDVbsvL+cEIVjlyrt1b/g/qhe3S/R6OFQAAAABJRU5ErkJggg=='
{ const ctx = canvas.getContext('2d', {
"font": "94px sans-serif", alpha:true,
"fillStyle": "#000000", pixelFormat: 'RGBA32'
"fillText": {"0": "😎", "1": -1, "2": 96}, });
"imageData": {"0": 18, "1": 90, "2": 1, "3": 1} ctx.drawImage(img, 0,0)
}, { let unint8Array2 = new Uint8Array(90000);
"font": "94px sans-serif",
"fillStyle": "#000000", ctx.readPixels(50, 0, 100, 128, 6408, 5121, unint8Array2);
"fillText": {"0": "6️⃣", "1": -1, "2": 96}, ctx.getImageData(50, 0, 100, 128);
"imageData": {"0": 38, "1": 77, "2": 1, "3": 1} console.log(unint8Array2+'')
}, { \ No newline at end of file
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": {"0": "🍼", "1": -1, "2": 96},
"imageData": {"0": 48, "1": 28, "2": 1, "3": 1}
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": {"0": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", "1": -1, "2": 96},
"imageData": {"0": 94, "1": 23, "2": 1, "3": 1}
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": {"0": "📊", "1": -1, "2": 96},
"imageData": {"0": 26, "1": 46, "2": 1, "3": 1}
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": {"0": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", "1": -1, "2": 96},
"imageData": {"0": 47, "1": 23, "2": 1, "3": 1}
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": {"0": "㊗️", "1": -1, "2": 96},
"imageData": {"0": 37, "1": 17, "2": 1, "3": 1}
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": {"0": "⛎", "1": -1, "2": 96},
"imageData": {"0": 62, "1": 28, "2": 1, "3": 1}
}]
for (let i = 0; i < sss.length; i++) {
var a = document.createElement('canvas')
let ctx = a.getContext('2d');
let s = sss[i];
ctx.font = s.font;
ctx.fillStyle = s.fillStyle;
ctx.fillText(...s.fillText)
console.log(ctx.getImageData(...s.imageData))
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment