nodejs修复ipa处理过的png图片


Posted in NodeJs onFebruary 17, 2016

最近做项目遇到一个需求:解析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

项目地址

node-pngdefry

NodeJs 相关文章推荐
nodejs npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 #NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 #NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 #NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 #NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 #NodeJs
实例详解Nodejs 保存 payload 发送过来的文件
Jan 14 #NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 #NodeJs
You might like
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
php中的观察者模式简单实例
2015/01/20 PHP
由ReactJS的Hello world说开来
2015/07/02 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
layui文件上传实现代码
2017/05/20 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
python局部赋值的规则
2013/03/07 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
python实现机器学习之多元线性回归
2018/09/06 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
四年级科学教学反思
2014/02/10 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
学生安全责任书模板
2014/07/25 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2014年人大工作总结
2014/12/10 职场文书
法定代表人资格证明书
2015/06/18 职场文书
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python