MDX开源实现无法读取部份PNG图片的问题

联动下面这个贴子:
https://forum.freemdict.com/t/topic/1314/37

故訓匯纂-手機版(標準版)-阿彌陀佛.zip (1.2 MB)

上传文件中包含a.png, b.png, c.png, d.png,4张PNG图片,使用MDXBuilder 3.0默认配置打包mdd资源文件,会导致c.png这张无法被读取,而把d.png更名为0003.png后,再次打包,所有图片均可正常读取。

这种情况会是啥原因造成的?

检查了2个大于1G的mdd,collinse22f.mdd和mwonline.mdd,没有发现这种无法读取的文件。

更新:

[2020-04-05]
原因就是上面链接里nonwill说的,有些PNG文件是压缩的,在MDXBuilder里再次压缩后,体积反而变大了。比如上传文件里的a.png有498个字节,打包后变成506个字节。

[临时办法]
修改第621行,取endPos和shadowEndPos中的最小值,测试了16万+文件暂时没发现问题。
期待更好的解决方案。

1 Like

仅仅更改文件名就可以了?

是的,改名就可以了,怀疑和打包顺序有关,改名0003.png后,这个文件会第一个打包,d.png的话是最后一个打包。

这个问题不是被nonwill大佬解决了吗?技术细节我不懂。可看他编译版本的更新日志。也是这个mdx

用 HEX 看下 PNG 的头部和尾部正常吗?

是有问题,用hex编辑器,手动改mdd解决了。我看看怎么代码里改。

没注意,一直用的2月2号版本。。。

不知道把这个endPos改成shadowEndPos是否可行?或者取两者中的最小值?大佬能指点下吗?

1 Like

从代码角度看没问题,就怕MDXBuilder做了特殊处理,测试了阿弥陀佛的故訓匯纂11684个文件和古代汉语2660+文件,还有MW2020的45200+个发音文件和牛九3.1.3的114178个文件也全部正常,先这么用,有问题再改了。

2 Likes

祝贺高手搞定bug!

mdx不透明的打包方式已经长时间不更新了,也许是时候考虑设计一种新的开源打包方式?

后面出的新格式会开源,保证格式透明打包透明。

3 Likes

汉文博士是查疑难汉字的好工具,虽然用的不多,但我一直备着,多种检字方式查起来很方便

看了最近的帖子,讨论了不少东西,有些问题只能摸索着解决,众位高手辛苦了 :+1:

期待。

开放就能让大家都参与进来,共同完善。虽然各人贡献有大有小,但制作美化css、清洗数据这些累活没人去做的话,好词典也流行不起来。

比如论坛今年年初出现了不少新抓取的大部头mdx,数据内容不可谓不好。但是缺少人去进一步清洗美化增强,结果大家用的还是那些经典mdx。

先新开个 git 仓库,占坑。。。

1 Like

有私有库了,还在犹豫新格式要不要用xml,用html的好处是现有mdx的资源能全部用上,而用xml能有最佳的搜索体验,现在纯英文的词典搜索效果很好,而混合语言的搜索结果非常差,需要提取数据再索引,类似双解词典,不处理的化只能类似GD那样索引单个汉字,像例句反查那样的效果没法实现,还有词干提取,fruitlessly索引的时候应该用fruitless,每个语言都不一样,没法混合处理。

为啥 XML 能最佳搜索体验

步子太大了,会扯着。。。

比如例句,需要用统一的标签区分出中英文来,像mac自带的词典,我能直接用结巴分词对中文例句单独处理,用标准分词处理英文。mdx里的html标签很混乱,只能全文整个HTML用标准分词处理,再用结巴分词处理,例句反查这种效果没法实现。

简单搞就像GD那样用sqlite的全文索引。