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中实现sleep功能实例
Mar 24 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python使用cPickle模块序列化实例
2014/09/25 Python
跟老齐学Python之变量和参数
2014/10/10 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
Python如何调用外部系统命令
2019/08/07 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
英国电子专家:maplin
2019/09/04 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
教师求职信范文分享
2013/12/27 职场文书
女娲补天教学反思
2014/02/05 职场文书
党员组织关系介绍信
2014/02/13 职场文书
12月红领巾广播稿
2014/02/13 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis