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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
nodejs模块学习之connect解析
Jul 05 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 NodeJs
nodejs微信开发之授权登录+获取用户信息
Mar 17 NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 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 CKEditor 上传图片实现代码
2009/11/06 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
php中curl使用指南
2015/02/05 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
jquery easyui使用心得
2014/07/07 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
Three.js学习之几何形状
2016/08/01 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
angular json对象push到数组中的方法
2018/02/27 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
详解爬虫被封的问题
2019/04/23 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
党员学习十八大感想
2014/01/17 职场文书
银行授权委托书格式
2014/10/10 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
初中体育教学随笔
2015/08/15 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python