Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

格式转换显示个进度会好点 #21

Open
longyc627 opened this issue Aug 30, 2017 · 13 comments
Open

格式转换显示个进度会好点 #21

longyc627 opened this issue Aug 30, 2017 · 13 comments

Comments

@longyc627
Copy link

无进度百分比显示,等待太漫长

@jeakey
Copy link
Member

jeakey commented Aug 30, 2017

@longyc627 主要是压缩过程是用js来写,效率太低,近期在编写新版本,可以优化这个问题

@dreampiggy
Copy link
Member

@jeakey 新版本计划使用什么编写,还是nwjs吗,或者是上Electron

@jeakey
Copy link
Member

jeakey commented Aug 30, 2017

@dreampiggy 使用Electron+vue,新版本主要聚焦在动态图片(PNGs、APNG、GIF、WEBP)之间的相互转换和APNG的压缩,不涉及静态图片,预计9月中提交上github,到时候希望 @dreampiggy 加入一起优化,把这个工具做的更好。

@dreampiggy
Copy link
Member

@jeakey 好!很早以前就想吐槽nwjs了。我自己这边实际也是动态图转换使用的比较多。静态WebP转换之类其实各种切图工具都有。到时候可以提交了我来看看,这次APNG转动态WebP的功能也是自己写的(虽说感谢了apng2webp……但实际那个项目也是我在贡献代码- -)。

@dreampiggy
Copy link
Member

dreampiggy commented Aug 30, 2017

另外,当前版本的PNG转APNG过程,已经把PNGs转APNG的使用JS的canvas画图的方式干掉了。现在是使用PNGs->pngout/pngquant->Opt PNGs->apngasm->APNG这样处理的。之前还有一步使用到了apngopt这个APNG压缩工具,但是实际查看C的源码,里面就是直接抄的apngasm的处理方式,压缩效率持平……所以就干掉最后一步了。

@jeakey
Copy link
Member

jeakey commented Aug 30, 2017

@dreampiggy 当时写iSparta的时候,Electron还不成熟...APNG2WebP的功能很赞,但是现在遇到个问题,WebP2APNG不太好弄,webpmux只会解出非复用的地方,导致每一帧尺寸不一样,无法合成APNG。不过WebP2APNG的场景貌似不多,考虑暂时不去支持。

@dreampiggy
Copy link
Member

@jeakey 动态WebP转APNG的话,现在暂时没有趁手的直接工具。webpmux就是输出帧,不带绘图,因此非要搞的话,就得像之前那种JS方式一样,搞个canvas,根据每帧disposal method画图,清除canvas,然后再输出到PNG,感觉比较麻烦。我这边用WebP其实主要是移动端在用,APNG对Android太不友好,所以一般都没有把动态WebP往回APNG转换的需要,这个确实可以暂不支持。

@jeakey
Copy link
Member

jeakey commented Aug 30, 2017

关于APNG的压缩,之前有试过你说的那种方式,pngquant会修改图片信息,造成原来可复用前一帧的图片信息变为不可复用了,并没有很好的利用动态图片特性。所以中间有用js处理过,不过确实效率比较低。
新版基于pngquant的代码,加入了APNG的压缩,效率和压缩率会更高

@dreampiggy
Copy link
Member

dreampiggy commented Aug 30, 2017

@jeakey 怪不得,我测试使用有损压缩(调用pngquant)的情况下,除非质量降低到30%,否则输出的APNG大小,和新版无损压缩(直接用的pngout)差距不大……好吧,是我疏忽了。

@dreampiggy
Copy link
Member

dreampiggy commented Aug 30, 2017

@longyc627 @jeakey Fixed in ver 2.1.2
回滚了原来的JS绘图的PNG转APNG方式,同时保留了新的无损压缩,会使用pngout来处理(就是我上个版本的方案)。不过最后加了一步apngopt(实际有时候可能会减少几KB)。

进度显示不了,其实原因是因为之前APNG转换器开满了CPU,导致JS eventLoop被hang,UI没有机会渲染。修复后两种方式都回归了串行的方法😅

最后在这里不得不吐槽一下,apngopt v1.4新版的命令行程序,Linux和macOS下根本就不能用,它里面竟然解析了"/"来当作参数分隔符(同时还保留了"-"标准参数分隔符),假如我这样写:

apngopt ~/Documents/a.png b.png

就会被神一般的认为传入一个-D, -a参数,然后Path就是~ocuments.png,直接会挂掉。简直无语了。这是压根没考虑过非Windows下的路径分隔符吗。所以现在是三个平台,下了源代码改了那个参数解析(其实就删了一个'/'的识别),从源码编译了二进制上传上去。如果你之后的重写的版本还需要这个apngopt的话,建议用我这个编译版,避免坑。

@dreampiggy
Copy link
Member

dreampiggy commented Sep 28, 2017

@jeakey Any update about that new version iSparta ? It's almost October now... I'm so excited about that new version product. ❤️

@jeakey
Copy link
Member

jeakey commented Sep 28, 2017

@dreampiggy We took some time to solve the problem in Windows.We will submit the new version today or tomorrow.

@dreampiggy
Copy link
Member

@jeakey Awesome. I will check the new version later!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants