Project1

标题: 请问怎样储存点的坐标最节省空间? [打印本页]

作者: 科可    时间: 2010-7-31 13:24
标题: 请问怎样储存点的坐标最节省空间?
因为考虑到目前双远景太废柴了,明明是两张一模一样的图,却要抠一张PNG,浪费大量的空间,占用大量的体积。其实我想只要把第二层的每个像素点坐标保存好,到时候给这些像素点的Z坐标调高,就可以达到双远景的效果,而不需要再保存一张PNG大图,从而达到节省空间,提高效率的效果。
我计算了一下。我的地图是分成了320*240的小块活动描绘。那么,每个像素点的位置都需要花两个字节来储存X坐标(因为320大于256,每个字节的值只能是0~255),花一个字节储存Y坐标。那么,假设这一个小块的地图有一半是遮盖层需要储存,那么就有38400个像素点需要储存,每个像素点花3个字节储存它的坐标的话就需要112K,这显然是一种错误的做法。于是我想到了320*240=76800个字节,花76800个字节,用0代表非遮盖层,用1代表遮盖层,依次把每个点用一个字节(0和1)记录,那么每张小图块都要花75K来记录遮盖层信息,可是这样做似乎也不是很明智,因为如果整个图块也没有遮盖层的话,也得花75K来记录。可是,为什么,如果用photoshop把颜色值调成引索的话,那么每张320*240的PNG图片,只要十多K到二十多K每张,我只储存了几个点,却占用了那么多的空间。我就想不通了。那么,通常是怎样储存大量的点呢?请问怎样储存点的坐标最节省空间?
作者: xiaominging    时间: 2010-7-31 14:36
咦?这个强烈的既视感是怎么回事……
双向提问什么的,最讨厌了……
作者: 六祈    时间: 2010-7-31 14:38
你很有想法

但是我想说,你这是以效率换空间的做法,不提倡
作者: IamI    时间: 2010-7-31 15:28
本帖最后由 IamI 于 2010-7-31 15:30 编辑

谁告诉你储存点一定要用一种数据结构的呢?
图片与一个起点索引。
作者: 紫苏    时间: 2010-8-1 00:19
索引模式的位图通常每个像素使用 1、2、4、或 8 位,分别保存了一个调色板索引值,8 位位图调色板索引可以是 0-255,一共可以有 256 种颜色,所以这种位图就是 256 色位图,那么 320*240 最多只需要 75kB,再加上 png 本身的压缩算法,位图数据算下来就没有多大了
按照你第一种方法,每个像素点 3kB 自然还不如完整的 png,但如果你每个像素点只需要 0 或者 1 的话,那完全可以只用 1 位而不是 1 个字节,这样每像素节省了 7 位,320*240 只需要 9600 字节 = 9.375kB
还有一种情况:当你结构中元素的体积很大,而并不是每个元素都紧密分布时,可以使用稀疏结构节省空间,如二维链表,四叉树,用以代替空间开销比较大的二维数组
作者: 科可    时间: 2010-8-1 06:27
索引模式的位图通常每个像素使用 1、2、4、或 8 位,分别保存了一个调色板索引值,8 位位图调色板索引可以 ...
紫苏 发表于 2010-8-1 00:19

嗯。谢谢您的解答。请版主认可为正确答案并加分。






欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1