base64图片裁剪空白区域
/** * 裁剪空白区域 * @param base64 * @param callback */ function tailor(base64,callback=null) { var img = new Image();//创建图片对象 img.src = base64; img.onload = function () { var c = document.createElement('canvas');//创建处理画布对象 var ctx = c.getContext('2d'); c.width = img.width; c.height = img.height; ctx.drawImage(img, 0, 0);//绘制 var imgData = ctx.getImageData(0, 0, c.width, c.height).data;//读取图片数据 var lOffset = c.width, rOffset = 0, tOffset = c.height, bOffset = 0; for (var i = 0; i < c.width; i++) { for (var j = 0; j < c.height; j++) { var pos = (i + c.width * j) * 4 if (imgData[pos] == 255 || imgData[pos + 1] == 255 || imgData[pos + 2] == 255 || imgData[pos + 3] == 255) { bOffset = Math.max(j, bOffset); // 找到有色彩的最下端 rOffset = Math.max(i, rOffset); // 找到有色彩的最右端 tOffset = Math.min(j, tOffset); // 找到有色彩的最上端 lOffset = Math.min(i, lOffset); // 找到有色彩的最左端 } } } lOffset++; rOffset++; tOffset++; bOffset++; var x = document.createElement("canvas");//创建处理后画布对象 x.width = rOffset - lOffset; x.height = bOffset - tOffset; var xx = x.getContext("2d"); xx.drawImage(img, lOffset, tOffset, x.width, x.height, 0, 0, x.width, x.height);//绘制 if (callback){ callback(x.toDataURL()); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库