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 相关文章推荐
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 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中Session的概念
2006/10/09 PHP
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
Python中针对函数处理的特殊方法
2014/03/06 Python
在Python中使用HTML模版的教程
2015/04/29 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
什么是类的返射机制
2016/02/06 面试题
2014年消防工作实施方案
2014/02/20 职场文书
体育活动总结范文
2014/05/04 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
孟佩杰观后感
2015/06/17 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
SQL Server实现分页方法介绍
2022/03/16 SQL Server