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写的一个简单项目打包工具
May 11 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
nodejs模块学习之connect解析
Jul 05 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
yii2 resetful 授权验证详解
2017/05/18 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
python实现ip代理池功能示例
2019/07/05 Python
python小程序实现刷票功能详解
2019/07/17 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
pytest中文文档之编写断言
2019/09/12 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
惠普香港官方商店:HP香港
2019/04/30 全球购物
大学生作弊检讨书
2014/02/19 职场文书
设计顾问服务计划书
2014/05/04 职场文书
导游词书写之黄山
2019/08/06 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
Pandas-DataFrame知识点汇总
2022/03/16 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫