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

2018-09-20 09:49:49 +08:00
 plagps

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/491062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX