近来做项目碰到一个需求:剖析apk和ipa包,然后把内里的icon上传到服务器。
题目
剖析上传历程比较简单,我运用JSZip对apk和ipa举行解压,然后把找到内里的icon上传到服务器。然则,当我在网页中运用图片时,题目涌现了。关于apk中的icon,没有任何题目,然则关于ipa中剖析出来的图片,在safari中能够一般显现,在其他任何浏览器去没法显现。
缘由
Google后发明,是苹果对png图片举行了优化处置惩罚,详细看这篇文章(检察),在文章中我们能够相识到一些有效信息:
Apple uses PNGCursh open source library to crush png images inside iPA files。
处理方案
作为一个前端工程师,我愿望用javascript处理这个题目。实在之前外洋已有人去处理了,NodeJS-PNGDefry就是能够,惋惜这个太久没保护,已跑不起来。
找不到可用的,我只能本身着手饱食暖衣,本身写一个。因此有了node-pngdefry。node-pngdefry的功用很明白,就是用Javascript来复原被苹果处置惩罚过的png图片。
node-pngdefry用法很简单,支撑命令行和通例的Node.js:
命令行用法
install:
$ npm install -g pngdefry
then run:
$ pngdefry -i icon.png -o icon.new.png
在Node.js中运用
$ npm install pngdefry --save-dev
var pngdefry = require('pngdefry');
var path = require('path');
var input = path.join(__dirname, 'icon.png');
var output = path.join(__dirname, 'icon.new.png');
pngdefry(input, output, function(err) {
if (err) {
return;
}
console.log('success');
});
Test
$ npm test
项目地点
谢谢
末了谢谢上面提到的文章的作者Jongware。