plagps
V2EX  ›  问与答

安卓系统上如何实现大数据量的图片拼接

By plagps at 2018 年 9 月 20 日 · 3161 次点击

例如有 100 张图片,每张图片大概在 800K 左右,想按一定的规则将这 100 张图片拼接成一张大的图片,传统的拼接函数肯定会出现 oom,想问下各位有没有科学的方法来实现这一功能。

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