You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use ImageMagick® to create, edit, compose, or convert digital images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, GIF, WebP, HEIC, SVG, PDF, DPX, EXR and TIFF. ImageMagick can resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
之前有个项目客户给一张精度很高的图让做成那种能够缩放的地图的效果。一开始的想法是直接加载大图,然后通过手势去控制图片的scale来实现,后来觉得不妥,高精度图片的体积实在太大,加载时间太长,效果很不好。通过研究发现openlayers这种专门用来加载地图的库才是更好的选择。但是怎么把图片制作成那种瓦片地图是个问题。
原理
瓦片地图的原理很简单。假设客户给的原图为(5124,5124),这是我们地图能够达到的最高分辨率,但是假设我们的视窗只有512512,此时我们只能看到左上角1/16的部分。假设用户最开始看到的图包含整个地图,也就是512512,此时地图被缩放了16倍,宽高个4倍,此时设level为1,那么当放大一倍时,此时地图实际图片大小为(5122,5122),此时level为2,当再放大一倍时,此时level为3,刚好为原图,分辨率最高。那么我们只要想办法把原图按不同level缩放切割就行。level1就是直接宽高各缩放4倍,level2各缩放2倍,再把它切成4张,每张大小为512512,level3的时候不用缩放,直接切成16张,同样每张512512.我们把
不同level的图片放在不同的文件夹下,然后用能够加载瓦片地图的库就能加载,例如openlayers。所以我们剩下的问题就是怎么切图了。
使用imagemagic处理图片
imagemagic是一个强大的图片处理工具,可以用命令行直接处理图片,可以很方便的实现各种图片处理操作。虽然很强大但不得不说文档很晦涩难懂,我也只是为了完成这个任务熟悉了几个命令而已,完全谈不上精通。
[我们的切图工具分2个步骤,第一步就是按不同level切图,但是因为并不是刚好如原理分析里讲的那么刚好就是整数倍,地图原图往往不是刚好是正方形,比如切的瓦片每个为512512,切到边上的时候可能只有360400这样的,这时需要把它补成512*512,不然会有奇怪的现象发生。注意,脚本里有些参数要根据你的实际情况自己设置。源码地址
The text was updated successfully, but these errors were encountered: