例如有 100 张图片,每张图片大概在 800K 左右,想按一定的规则将这 100 张图片拼接成一张大的图片,传统的拼接函数肯定会出现 oom,想问下各位有没有科学的方法来实现这一功能。
1
MozzieW 2018-09-20 10:06:21 +08:00
图片出来不看文件大小, 要看图片的像素. 假设每张都是 1000*1000, 要拼成大图估计无解, 电脑也够呛; 合成了普通设备也打不开, 使用场景也有替代的实现方案. 如果只是要合成一张 4000*4000 的"大图", 这完全是不同级别的东西.
感觉是没调研拍脑袋的. |
2
plagps OP @MozzieW 不好意思 是我没有说清楚 其实这个应用场景是这样的,在地图上选取一个经纬度范围 然后 将这个区域内的所有瓦片地图 拼接成一个大的 png 的图片 一般的瓦片大小都是 512 的分辨率,大 150KB 左右,运用传统的拼接方法肯定是不好实现了,一不小心就 OOM 了,所以 看有没有从数据层面上的科学拼接方法 。
|
3
MozzieW 2018-09-20 13:19:06 +08:00
我的理解是, 这些图片后续还要用来展示的, 拼那么大展示也用不了. 理清业务了完全可以用其他方法实现, 比如生成一种 2000*2000 的完整图片,用来显示全景, 缩放是时要显示那块再读取具体的图片. 这样就可以绕过完成一个完整的超大图, 又实现了效果
|
4
Yafeng043 2018-09-20 13:21:06 +08:00
gdal 对几个 G 的文件都没问题。个人理解是不载入内存中,直接读到相应字节进行操作。
|
5
learnshare 2018-09-20 13:25:43 +08:00
首先考虑是否真的需要拼接,只做显示瓦片图足够了
需要拼接的话客户端应该没这个能力,服务端处理比较好 |
7
plagps OP @learnshare 需要 ,这个需求是刚需!项目用户比较特殊
|
9
lidongdong1222 2018-09-20 15:41:11 +08:00
|
10
Yafeng043 2018-09-20 17:33:28 +08:00 via iPhone
@plagps 入门的样例就应该有,具体的记不住了。记得是先创建一个目标大小的图片,然后进行字节替换。
|
11
814084764 2018-09-21 12:55:38 +08:00
C 写呗。不会 OOM。
|