现在正在做一个测绘的软件,需要加载100M-200M左右的区域图,遇到的问题就是如何能讲这么大的图片加载进去?
求高手,前提是不损失精度(像素)

解决方案 »

  1.   

    顶楼上,我觉得第一种方法比较靠谱。
    第二种方法你要读取文件屏幕要显示的数据,首先得先把一百M的文件载进来,然后每次读取的时候还要skip,而从java的源代码可以看出来
       public long skip(long n) throws IOException { long remaining = n;
    int nr;
    if (skipBuffer == null)
        skipBuffer = new byte[SKIP_BUFFER_SIZE]; byte[] localSkipBuffer = skipBuffer;

    if (n <= 0) {
        return 0;
    } while (remaining > 0) {
        nr = read(localSkipBuffer, 0,
          (int) Math.min(SKIP_BUFFER_SIZE, remaining));
        if (nr < 0) {
    break;
        }
        remaining -= nr;
    }
    skip方法并不是直接“跳到”你要读取的位置,还是要遍历。第一种方法 楼主可以找或者自己写切分图片的工具,把大图切成多个2-4个屏幕大小的小图,就像楼上说的那样就行了。
      

  2.   

    文件就是格式就是JPG  像素是20000*20000的  切片加载具体如何在一个VIEW里面加载多块啊?读要现实的额数据好像也要先加载完吧
      

  3.   

    切片是在PS里面均匀切好 然后放在SD卡上的吧   关键是如何实现像谷歌地图那样平面加载多张图 而且无缝拼接起来的
      

  4.   

    额drawbitmap 你有一个bitmap的链表,数组,向量都行, 存现在要画的图。 把链表的图画出来就行了。
    链表根据你现在的坐标存放应该存放的图。比如现在是初始化 链表里只有编号是0的图,你移动到800,800的时候(假设切片是1000*1000的),这时候你的链表里就是0,1,2,3。
    具体到画的时候就是一个for循环 然后把这些图画出来就可以,再具体就是0的全局坐标是0,0,图1的全局坐标是0,1000;2的坐标是1000,0;3的坐标是1000,1000;然后你画的时候在全局坐标的基础上加个偏移,作为视窗坐标就可以了。
      

  5.   

    你网上下个android应用开发解密的电子书,然后126页有图片绘制,所谓无缝贴出就是贴一块嘛,没那么复杂。
      

  6.   

    用C加载,用libpng或者libjpeg,要不就直接用android系统的skia