首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   plagps · 2018-09-20 09:49:49 +08:00 · 1071 次点击
    这是一个创建于 444 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 回复  |  直到 2018-09-21 12:55:38 +08:00
        1
    MozzieW   2018-09-20 10:06:21 +08:00
    图片出来不看文件大小, 要看图片的像素. 假设每张都是 1000*1000, 要拼成大图估计无解, 电脑也够呛; 合成了普通设备也打不开, 使用场景也有替代的实现方案. 如果只是要合成一张 4000*4000 的"大图", 这完全是不同级别的东西.
    感觉是没调研拍脑袋的.
        2
    plagps   2018-09-20 10:16:06 +08:00
    @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
    首先考虑是否真的需要拼接,只做显示瓦片图足够了
    需要拼接的话客户端应该没这个能力,服务端处理比较好
        6
    plagps   2018-09-20 15:14:30 +08:00
    @Yafeng043 对 我的想法也是这样 肯定是直接读到字节操作,请问大概是 gdal 中的哪个函数用来做这个的?
        7
    plagps   2018-09-20 15:16:46 +08:00
    @learnshare 需要 ,这个需求是刚需!项目用户比较特殊
        8
    plagps   2018-09-20 15:17:12 +08:00
    @MozzieW 后来的展示可能是在 PC 上,但想在安卓上实现这个功能
        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。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   877 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
    ♥ Do have faith in what you're doing.