口袋数码论坛's Archiver

ace919 发表于 2007-11-10 08:34

修改电子地图一把抓,制作更清晰、文件更小的图

首先非常感谢电子地图一把抓1.0版的作者kenchang,一把抓为大家提供了很大帮助。

在使用一把抓过程中,也感觉有些值得改进之处。一是一把抓先把整个图抓到内存,然后存盘,当图很大时,物理内存不足,系统自动使用虚拟内存,会导致抓图前申请内存及抓图后存盘费较长的时间,也限制了抓超大的图。感觉可以改进为采用无压缩BMP格式存盘,这样就可以一边抓图一边存盘,占用内存较少,图的大小也就不受内存限制了。

二是关于压缩格式的问题。一把抓支持1、4、8、24位的像素,1和4位的因受颜色数的限制,只能用于特殊情况。8位抓图对内存需求是24位的四分之一,能抓更大的图,但要一边抓图一边做24位到8位颜色的转换,不能等到全部抓取完后再做这一转换,因此转换质量较低,抓取的图大量使用了仿色(dither),即使原图颜色数不足256也要使用仿色。因此试过几次8位抓图质量不满意后,总是用24位抓图,然后在ps中转为8位的(不使用仿色),这样质量高多了。

一把抓24位图的.tif文件采用了有损jpeg压缩,这在抓本来是真彩色的卫图时合适,但对主要由线条、文字、色块组成的图(矢量图光栅化后),jpeg压缩会导致线条及文字边沿出现一些噪点,既影响了边缘清晰度,也影响了转换到256色后的文件压缩率。
重新编个类似一把抓的程序有点费事,笔者偷懒直接修改了MapCap.exe,把24位抓图存tif文件时采用jpeg压缩改为ZIP或LZW。修改方法如下:

用UltraEdit打开MapCap.exe,在地址00021F1Ch处原数值为07,此处07代表24位图为jpeg压缩,将其改为08存盘后是ZIP压缩,若改为05是LZW压缩。按照ps里提示的说法,ZIP压缩在老的程序里可能不认,笔者实验的结果是ZIP压缩率比LZW略高。ZIP及LZW均为无损压缩。

好了,用修改后的一把抓采用24位抓图,在ps中转换成8位索引模式(注意转换时别用仿色),存为8位的png或gif文件,看看是不是文件比用原来的一把抓下来的小了不少,而且放大后也没有噪点了呢。


[color=Blue]已把lzw、zip、无压缩及原版的jpg压缩上传到了:
ftp://gpsuser2020:[toniegps]@61.132.87.163:2100/incoming/18 ---  GPS  导航相关/电子地图一把抓V1.0修改.rar[/color]

[[i] 本帖最后由 ace919 于 2008-9-14 07:35 编辑 [/i]]

Guidance 发表于 2007-11-12 14:19

楼主太强了!晚上去试试!

这样存下来后还是tif格式吧?其实只要抓下来时无损,也不用PS转换了吧?直接img2ozf应该能转换成同样高效的地图了吧?我刚下载的img2ozf v3.03, 生成的是ozfx3文件。

xz66 发表于 2007-11-12 15:09

格式倒是其次,关键说LZ说的第一条,把图先放内存里然后一起存盘,我觉得是现在版本的最大问题

ace919 发表于 2007-11-13 06:17

回复 #2 Guidance 的帖子

还是tif文件,只是把24位tif文件的压缩格式改为无损的。ps转换用于24位抓图后制作8位地图,当然用img2ozf可以转换,个人喜欢先用ps转换其实是缘于对ps的迷信,因为据说24到8位的转换并没有最佳方案(事先限定调色板除外),觉得ps强,就认为ps在这方面也一定不差,呵呵。再就是有时抓的图有logo,需要ps掉,以及裁剪大小等,就顺便在ps里转格式了。

不过话又说回来了,其实地图的颜色不像风景人物照片要求那么严格,色彩与原图有点差别也没事。

[[i] 本帖最后由 ace919 于 2007-11-13 06:27 编辑 [/i]]

ljd33837 发表于 2007-11-13 08:55

w:o w:o 我按搂住的方法改了!可是试抓10000 x 10000的图片下来比较两者都是90多M!何解呢!难道是我未改好“一把抓”!麻烦兄弟发一个主程序上来试试p:b

bobi0622 发表于 2007-11-13 10:57

LZ强人一个,回去偶也试试。

ace919 发表于 2007-11-13 18:37

回复 #5 ljd33837 的帖子

我说的文件更小指最后制作的地图文件,而不是抓下来的图。若抓google earth卫图,无损压缩肯定不如jpeg压缩率高。

不知你抓的是什么地图,像mapbar、mapabc等图片,无损压缩率也挺高,但与jpeg比谁高谁低需要看具体情况。对于GPS应用,最终大多要生成ozf2/ogf2文件,因为无损压缩没有了jpeg压缩产生的噪点,抓下来图制作的ozf2/ogf2通常要小,而且没有边缘噪点。

只要你改程序时在那个地址处看到07,就应该不会改错吧。另外可以用像irfanview等看图软件查看压缩编码格式的。

[[i] 本帖最后由 ace919 于 2007-11-13 18:41 编辑 [/i]]

Guidance 发表于 2007-11-13 19:24

太棒了!

完全没有粉红色的噪点了!万分感谢楼主!好强啊!我只是看出来原程序应该是用VB编的,楼主居然还能直接修改!

有一个问题,改之前也是:我选24位存下来的图是黑白的,只能选8位,不知其他人是否也是?

再问一下,当前是哪个地图/卫片最新?我看google earth 或 maps.google.com至少有一年左右的滞后,其他地图呢?

ljd33837 发表于 2007-11-14 02:50

回复 #7 ace919 的帖子

p:b p:b 原来是这样!谢谢楼主的详细解答,我抓了LT2007的图片!我试试抓其它图片看看先。

inhot 发表于 2007-11-14 12:03

拭了拭楼主的方法,真的不错!p:b p:b
PS是什么东东啊?;) ;)

ace919 发表于 2007-11-14 19:51

回复 #8 Guidance 的帖子

你是想说选4位存下来的图是黑白的吧?我也遇到过,不知何原因

abcxyz888 发表于 2007-11-21 03:44

dingyige

seray 发表于 2007-11-22 09:13

受益
改了ZIP压缩后确实画质好了。但是ZIP压缩的tif,OZI和IMG2OZI是不认的。
好在我们一般不会直接一次性只抓一张全部的详细图
我选择在大地图内做切片,分批下载。尽量保持每张切片图在1wX1w左右,文件不会太大,然后用PS改成256色的索引,这样文件尺寸就又减小下来了
PS对内存的需求也小了。
最后把所有的256色切片在PS中内合并,超大地图就不难产生了。

seray 发表于 2007-11-22 09:52

受益
改了ZIP压缩后确实画质好了。但是ZIP压缩的tif,OZI和IMG2OZI是不认的。
好在我们一般不会直接一次性只抓一张全部的详细图
我选择在大地图内做切片,分批下载。尽量保持每张切片图在1wX1w左右,文件不会太大,然后用PS改成256色的索引,这样文件尺寸就又减小下来了
PS对内存的需求也小了。
最后把所有的256色切片在PS中内合并,超大地图就不难产生了。

ace919 发表于 2007-11-22 19:38

回复 14楼 的帖子

看来应该优先用LZW压缩,tif文件用ZIP压缩是有兼容问题。

hadaimon 发表于 2007-12-2 04:34

楼主能放个修改图上来吗? 我没装UltraEdit ,只用HEDIT。地址表达方式不一样,只能参考前后内容定位。望楼主能上图看看

ace919 发表于 2007-12-3 13:26

回复 16楼 的帖子

搜索:00 00 EB 13 BE 05 80 00 00 EB 0C BE 07 00 00 00
改为:00 00 EB 13 BE 05 80 00 00 EB 0C BE 05 00 00 00 是LZW压缩

neusun 发表于 2007-12-12 15:25

先用前辈的地图,等我不够用的时候再自己抓,呵呵

hadaimon 发表于 2007-12-21 21:28

回复 17楼 的帖子

多谢楼主的回复:D

yuhui05 发表于 2008-1-2 10:07

找不到修改的地方

您好!
我怎么找不到在地址00021F1Ch,以及修改的地方  
[img]C:\Documents and Settings\Administrator\My Documents\My Pictures\1[/img]
请贴图告之!
谢谢!

页: [1] 2

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.