用JavaScript修复ipa处理过的的png图片

近来做项目碰到一个需求:剖析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-pngdefrynode-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

项目地点

node-pngdefry

谢谢

末了谢谢上面提到的文章的作者Jongware。

    原文作者:forsigner
    原文地址: https://segmentfault.com/a/1190000004440297
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞