将 x,y 坐标数组转换为一条线(jpg) - Python

里奇

我收到一个通过 API 调用在基本捕获设备上绘制的“签名”。

来自设备的响应数据中有一个带有“签名”的 json 对象,我在 javascript 中对其进行预解析,然后将其传递给需要将捕获的签名存储为 base64 编码图像(最好是 jpg)的 python 服务。

我可以在 javascript 中进行转换(根据给出的答案),如果它必须在那里,但更愿意在 python 层中进行。

这是我得到的数据的一个例子:

{“数据”:[{“x”:“2B”,“y”:“58”},{“x”:“2D”,“y”:“5B”},{“x”:“2E” ,“y”:“5E”},{“x”:“30”,“y”:“61”},{“x”:“30”,“y”:“63”},{“x” :“32”,“y”:“65”},{“x”:“33”,“y”:“67”},{“x”:“35”,“y”:“69”}, {“x”:“36”,“y”:“6C”},{“x”:“38”,“y”:“6E”},{“x”:“3A”,“y”:“ 71”},{“x”:“3C”,“y”:“73”},{“x”:“3D”,“y”:“75”},{“x”:“41”,“y”:“79”},{“x”:“42”,“y”:“7B”},{“x”:“46” ,“y”:“7F”},{“x”:“47”,“y”:“81”},{“x”:“49”,“y”:“83”},{“x” :“4D”,“y”:“89”},{“x”:“4F”,“y”:“8B”},{“x”:“52”,“y”:“8D”}, {“x”:“54”,“y”:“8F”},{“x”:“57”,“y”:“90”},{“x”:“59”,“y”:“ 93" }, { "x": "5C", "y": "95" }, { "x": "61", "y":“9A”},{“x”:“63”,“y”:“9D”},{“x”:“66”,“y”:“9F”},{“x”:“69”, “y”:“A2”},{“x”:“72”,“y”:“A8”},{“x”:“74”,“y”:“AA”},{“x”: “77”,“y”:“AC”},{“x”:“79”,“y”:“AE”},{“x”:“7C”,“y”:“AF”},{ “x”:“7E”,“y”:“B1”},{“x”:“80”,“y”:“B2”},{“x”:“82”,“y”:“B4” " }, { "x": "85", "y": "B5" }, { "x": "87", "y":“B5”},{“x”:“89”,“y”:“B6”},{“x”:“90”,“y”:“B6”},{“x”:“95”, “y”:“B3”},{“x”:“97”,“y”:“B1”},{“x”:“99”,“y”:“AD”},{“x”: “9B”,“y”:“AC”},{“x”:“9D”,“y”:“A7”},{“x”:“9F”,“y”:“A4”},{ “x”:“A2”,“y”:“9B”},{“x”:“A3”,“y”:“97”},{“x”:“A3”,“y”:“93 " }, { "x": "A4", "y": "90" }, { "x": "A4", "y":“8C”},{“x”:“A5”,“y”:“87”},{“x”:“A5”,“y”:“77”},{“x”:“A6”, “y”:“73”},{“x”:“A6”,“y”:“67”},{“x”:“A7”,“y”:“63”},{“x”: “A7”,“y”:“60”},{“x”:“A9”,“y”:“5A”},{“x”:“A9”,“y”:“56”},{ “x”:“AD”,“y”:“49”},{“x”:“AD”,“y”:“47”},{“x”:“AF”,“y”:“44 " }, { "x": "B2", "y": "3A" }, { "x": "B3", "y":“36”},{“x”:“B6”,“y”:“2F”},{“x”:“BB”,“y”:“27”},{“x”:“BD”, “y”:“26”},{“x”:“BE”,“y”:“24”},{“x”:“C0”,“y”:“23”},{“x”: “C2”,“y”:“21”},{“x”:“C4”,“y”:“20”},{“x”:“C9”,“y”:“20”},{ “x”:“FFFF”,“y”:“FFFF”}] }BE”,“y”:“24”},{“x”:“C0”,“y”:“23”},{“x”:“C2”,“y”:“21”},{“ x”:“C4”,“y”:“20”},{“x”:“C9”,“y”:“20”},{“x”:“FFFF”,“y”:“FFFF” }] }BE”,“y”:“24”},{“x”:“C0”,“y”:“23”},{“x”:“C2”,“y”:“21”},{“ x”:“C4”,“y”:“20”},{“x”:“C9”,“y”:“20”},{“x”:“FFFF”,“y”:“FFFF” }] }

我是否需要解析它以将其转换为 jpg,或者有没有办法可以使用 PIL(或其他库)将这组图转换为图像?

安东契科夫

由于您在问题的标题中写了 python 或 js,所以这里有一个 js 片段,它在<canvas>元素中显示您的 json 对象。

    <canvas id="canvas" width="256" height="256"></canvas>
    <script type="text/javascript">
    
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var json = '{ "signature": { "data": [ { "x": "2B", "y": "58" }, { "x": "2D", "y": "5B" }, { "x": "2E", "y": "5E" }, { "x": "30", "y": "61" }, { "x": "30", "y": "63" }, { "x": "32", "y": "65" }, { "x": "33", "y": "67" }, { "x": "35", "y": "69" }, { "x": "36", "y": "6C" }, { "x": "38", "y": "6E" }, { "x": "3A", "y": "71" }, { "x": "3C", "y": "73" }, { "x": "3D", "y": "75" }, { "x": "41", "y": "79" }, { "x": "42", "y": "7B" }, { "x": "46", "y": "7F" }, { "x": "47", "y": "81" }, { "x": "49", "y": "83" }, { "x": "4D", "y": "89" }, { "x": "4F", "y": "8B" }, { "x": "52", "y": "8D" }, { "x": "54", "y": "8F" }, { "x": "57", "y": "90" }, { "x": "59", "y": "93" }, { "x": "5C", "y": "95" }, { "x": "61", "y": "9A" }, { "x": "63", "y": "9D" }, { "x": "66", "y": "9F" }, { "x": "69", "y": "A2" }, { "x": "72", "y": "A8" }, { "x": "74", "y": "AA" }, { "x": "77", "y": "AC" }, { "x": "79", "y": "AE" }, { "x": "7C", "y": "AF" }, { "x": "7E", "y": "B1" }, { "x": "80", "y": "B2" }, { "x": "82", "y": "B4" }, { "x": "85", "y": "B5" }, { "x": "87", "y": "B5" }, { "x": "89", "y": "B6" }, { "x": "90", "y": "B6" }, { "x": "95", "y": "B3" }, { "x": "97", "y": "B1" }, { "x": "99", "y": "AD" }, { "x": "9B", "y": "AC" }, { "x": "9D", "y": "A7" }, { "x": "9F", "y": "A4" }, { "x": "A2", "y": "9B" }, { "x": "A3", "y": "97" }, { "x": "A3", "y": "93" }, { "x": "A4", "y": "90" }, { "x": "A4", "y": "8C" }, { "x": "A5", "y": "87" }, { "x": "A5", "y": "77" }, { "x": "A6", "y": "73" }, { "x": "A6", "y": "67" }, { "x": "A7", "y": "63" }, { "x": "A7", "y": "60" }, { "x": "A9", "y": "5A" }, { "x": "A9", "y": "56" }, { "x": "AD", "y": "49" }, { "x": "AD", "y": "47" }, { "x": "AF", "y": "44" }, { "x": "B2", "y": "3A" }, { "x": "B3", "y": "36" }, { "x": "B6", "y": "2F" }, { "x": "BB", "y": "27" }, { "x": "BD", "y": "26" }, { "x": "BE", "y": "24" }, { "x": "C0", "y": "23" }, { "x": "C2", "y": "21" }, { "x": "C4", "y": "20" }, { "x": "C9", "y": "20" }, { "x": "FFFF", "y": "FFFF" } ], "signature_format": "raw" } }';
    var signature = JSON.parse(json);
    var data = signature.signature.data;
    
    ctx.beginPath();
    ctx.moveTo(parseInt(data[0].x, 16), parseInt(data[0].y, 16));
    for(var i = 1; i < data.length; ++i)
    {
        ctx.lineTo(parseInt(data[i].x, 16), parseInt(data[i].y, 16));
    }
    
    ctx.stroke()
    
    </script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章