独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图( 五 )


独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图

文章插图
通过对比,我们可以直观的看出来,我的图片要比krpano清晰的,它的图片略带模糊,但是其实观感并不差 , 过渡都非常平滑 。
那么我推测,让图片变得模糊可以大大降低图片体积,这跟我们平时压缩图片还有点不太一样,压缩图片主要是减少冗余像素,压缩率太高图片观感会比较差 。
这时候,我又看了配置文件vtour-multries.config
# preview pano settingspreview=truegraypreview=falsepreviewsmooth=25previewpath=%OUTPUTPATH%/panos/%BASENAME%.tiles/preview.jpg其中有一个属性叫做:previewsmooth 。
瞬间明白了,krpano是给它做了一个平滑处理 。仔细想想 , 上面已经说了场景的预览图是为了提升加载速度和平滑过渡到原图 。那么,第一预览图的体积就不能太大 。第二 , 如果预览图没有做平滑处理的话,加载之后看起来会颗粒感比较严重,影响观感 。此刻很想再说一声Krpano YYDS...
所以,我也需要对预览图进行平滑处理 。
图片平滑处理的方式常见的有这几种:
  • 均值平滑
  • 高斯平滑
  • 中值平滑
通过对比这几种效果 , 比较符合的是高斯平滑,其实就是咱们平时所说的高斯模糊
11.缩略图thumb.jpgkrpano已经做到极致了 。
krpano的缩略图一般只有17kb左右,但却如此清晰,观感也很好 。
如果我用高斯模糊的话,会显得不清晰,可能它应该经过其它的处理 。我考虑到缩略图的使用场景,认为没必要深究缩略图,它的作用仅用来示意 。使用我demo切出来的图 , 相信你们也看不出差别 。
12总结:01.技术上,我们需要了解:
  1. 核心点在于推理出krpano多分辨率切图的算法
  2. canvas 2d
  3. ImageData
  4. web worker
  5. 高斯模糊
  6. 善用jszip
  7. file-saver
02.对于krpano的评价
  1. 我仅仅是实现krpano的部分功能,不难发现krpano做的非常好,很多细节都考虑得很到位,并且自身也做过很多测试;
  2. krpano的价格其实并不贵,一次注册终身免费,并且我们使用的10年来,它一直在迭代;
  3. ...
03.为什么我要做这个功能?
  1. 这一定是从用户体验出发,从产品出发,从业务中来,再去思考如何与技术结合;
  2. 有点在开篇已经提过了,有一定的使用场景;
04.我为什么能够去完成它呢?
  1. 因为这不是一个KPI项目,不是一个公司项目,不是团队规划的需求,而是我自己的项目,但它的起因也是源于业务中遇到的问题;
  2. 如果在公司中,一个功能埋头2天没有头绪 , 那么大概已经想要放弃了,因为会有期限给你施加压力 。而我自己业余项目,是每隔一段时间就去想想、看看 , 一步一步去找规律、求证、验证、测试,尽量成功,失败也无所谓;
  3. 做任何事情都需要耐心、沉着冷静
05.如何还原全景图?
  1. 这是后面再把它做到krpano-js-tools里面,敬请期待;
  2. 我的做法不完全沿用现在的做法,会使用 webgl,使用webgl做全景,业界的标杆是贝壳找房;
【独辟蹊径:逆推Krpano切图算法,实现在浏览器切多层级瓦片图】

推荐阅读