跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教各位大神一个关于 sharp .composite 的问题
未分類
2020 年 9 月 8 日

请教各位大神一个关于 sharp .composite 的问题

请教各位大神一个关于 sharp .composite 的问题

資深大佬 : xiyuesaves 2

我想使用 sharp 来生成一个扫雷的地图,大小是由用户输入的,生成后这样:

请教各位大神一个关于 sharp .composite 的问题

我是先生成背景图再向上面合成数字和方块请教各位大神一个关于 sharp .composite 的问题 但是如果遇到用户输入的值过大(我测试是超过 12*12)就会报错

Exception code=0xc00000fd flags=0x0 at 0x0000000067F19628 

在网上搜了下也没找到类似的错误,请问下还有更适合做这个操作的方式吗?下面是有问题的源码

function create_map(x,y) {     return new Promise((resolve, reject) => {         var map_list = [],coordinate_list = [],buffer_svg = []         var in_x = x * 15 + 15         var in_y = y * 15 + 15         var k_x = 15,k_y = 15         var img_data = fs.readFileSync("static_img/l_b.png")         var max_num = y         //生成 svg 文本配置         var attributes = {fill: 'black', stroke: ''};         var options = {x: 0, y: 2,letterSpacing:0, fontSize: 12, anchor: 'left top', attributes: attributes};         //按照最大边来生成 svg 数字         if (x > y) {             max_num = x         }            //生成 svg 文本图片并转换为 Buffer 格式         for(var i = 0; i < max_num; i++){             let svg = textToSVG.getSVG((" "+i).substr(-2), options);             buffer_svg.push(Buffer.from(svg))         }                  // x 轴定位数字         for(var i = 0; i < x;i++){             coordinate_list.push("{input:buffer_svg["+i+"],left:"+(i*15+15)+",top:0}")         }                  // y 轴定位数字         for(var i = 0; i < y;i++){             coordinate_list.push("{input:buffer_svg["+i+"],left:0,top:"+(i*15+15)+"}")         }          for(var i = 0; i < y; i++){             k_x = 15             for(var k = 0; k < x; k++){                 map_list.push("{input:img_data,left:"+k_x+",top:"+k_y+"}")                 k_x += 15             }             k_y += 15         }         var temp_script = `function (sharp,img_data,resolve,buffer_svg) {             sharp({                  create: {                     width: ${in_x},                     height: ${in_y},                     channels: 4,                     background: { r: 192, g: 192, b: 192, alpha: 1 }                  }             })             .composite(                 [${map_list}]             )             .png()             .toBuffer()             .then(data => {                 sharp(data)                 .composite(                     [${coordinate_list}]                 )                 .toFile('./temp_image/tp_.jpg', (err, info) => {                     if (err) {                         console.log(err)                         resolve(false)                     }else{                         resolve(true)                     }                 })             })         }`         return Function('"use strict";return (' + temp_script + ')')()(             sharp,img_data,resolve,buffer_svg         );     }) } 

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具