jtopo的项目实战(六)

话接上回,继续实现jtopo本身不具有的一些功能,有讲的不对的地方,欢迎大家在评论区留言提出,博主基本每天在线,看到都会及时回复的,我们一起进步,奥利给,还有,码字不易,如果觉得博主写的不错的欢迎打赏哈!

7.没有生成缩略图的接口

目前很多拓扑图类的项目中,都要求能生成缩略图,既能看出整个拓扑图的整体轮廓,也不能太大,方便快速加载,jtopo自带有类似的接口,但不能直接用,好吧,那我们就继续发扬自力更生的传统美德,在原有的接口基础上,整出一套适合我们自己的接口方法出来,废话不多说,先看效果图,再聊代码。

 

原图(Jason加载拓扑后的效果)

 

在看看生成的缩略图(350x220),当然最后的接口是可以指定缩略图大小的。

 

 

好了,看完效果图了,我们言归正传说说代码,看到底是怎么实现的。

 

首先,我们在jtopo-editor中定义一个方法,用来获取当前拓扑图的base64串,因为有了串我们才好下手自定义我们想要的东西,你们心心念的代码来啦!

getBase64Str: function(){

       return  editor.stage.eagleEye.getImage();

}

对了,注意这段代码一定要放在editor.utils中,不要放错地方了。

 

拿到了base64,就可以通过字符串转换成图片,但是,我们想要的不是原尺寸的拓扑图,因为它太大了,所以这个串不是我们最终想要的字符串,好了,第二步才是关键,我们要做的是用拿到的字符串实例化一个Image对象,当然了,这个Image对象一定是我们想要的尺寸,再将这个Image绘制到canvas对象上,最后的最后就是重新导出base64,重新生成的字符串就是我们想要的,即指定大小的缩略图,原理说完了,该上代码了。

/*获取指定大小的base64图片*/
function comPrevw(base64IMG,callback) {

    var quality = 0.7;	//定义默认图片压缩后的质量(0~1)
    img = new Image();
    img.src = base64IMG;

    var oWidth = 350;
    var oHeight = 220;
    var Size = {width: oWidth, height: oHeight};
    //开始进行转换到canvas再压缩操作
    var canvas = document.createElement("canvas");
    canvas.width = Size.width;	//设置画布的宽度
    canvas.height = Size.height;//设置画布的高度
    var ctx = canvas.getContext("2d");

    img.onload = function () {
        ctx.drawImage(img,0,0,Size.width,Size.height);
          var smBase64 = canvas.toDataURL('image/png', quality)
          if (callback) {
              callback(smBase64);
          }   
    } 
}

大家可以根据自己的需要灵活调整大小,其中oWidth 就是缩略图的宽度,oHeight 就是缩略图的高度,最终生成的缩略图base64通过回调函数传回,可以在回调中处理后面的逻辑。比如我是这么用的,在回调中保存现有的拓扑图,这样一来保存拓扑图的时候,缩略图也一并保存了,其中editor.utils.getBase64Str()就是我们一开始定义的方法,用来拿到原始拓扑图的Base64字符串。

 

好了,jtopo缩略图算是实现啦。有问题的小伙伴欢迎在下面评论留言哦~!我们评论区见。

 

最后,博主有一个小小的心愿,就是希望大家点一下下方的点赞、分享和收藏,博主希望大家都支持下,后期有好的东西我会继续分享给大家。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不脱发的牧码人

你的鼓励将是我前进的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值