nodejs修復(fù)ipa處理過(guò)的png圖片
最近做項(xiàng)目遇到一個(gè)需求:解析apk和ipa包,然后把里面的icon上傳到服務(wù)器。
問(wèn)題
解析上傳過(guò)程比較簡(jiǎn)單,我使用JSZip對(duì)apk和ipa進(jìn)行解壓,然后把找到里面的icon上傳到服務(wù)器。但是,當(dāng)我在網(wǎng)頁(yè)中使用圖片時(shí),問(wèn)題出現(xiàn)了。對(duì)于apk中的icon,沒(méi)有任何問(wèn)題,但是對(duì)于ipa中解析出來(lái)的圖片,在safari中可以正常顯示,在其他任何瀏覽器去無(wú)法顯示。
原因
Google后發(fā)現(xiàn),是蘋(píng)果對(duì)png圖片進(jìn)行了優(yōu)化處理,具體看這篇文章(查看),在文章中我們可以了解到一些有用信息:
Apple uses PNGCursh open source library to crush png images inside iPA files。
解決方案
作為一個(gè)前端工程師,我希望用javascript解決這個(gè)問(wèn)題。其實(shí)之前國(guó)外已經(jīng)有人去解決了,NodeJS-PNGDefry就是可以,可惜這個(gè)太久沒(méi)維護(hù),已經(jīng)跑不起來(lái)。
找不到可用的,我只能自己動(dòng)手豐衣足食,自己寫(xiě)一個(gè)。因此有了node-pngdefry。node-pngdefry的功能很明確,就是用Javascript來(lái)還原被蘋(píng)果處理過(guò)的png圖片。
node-pngdefry用法很簡(jiǎn)單,支持命令行和常規(guī)的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
項(xiàng)目地址
相關(guān)文章
node.js實(shí)現(xiàn)端口轉(zhuǎn)發(fā)
這篇文章主要為大家詳細(xì)介紹了node.js實(shí)現(xiàn)端口轉(zhuǎn)發(fā)的關(guān)鍵代碼,感興趣的小伙伴們可以參考一下2016-04-04
Node.js重新刷新session過(guò)期時(shí)間的方法
在Node.js中,我們通常使用express-session這個(gè)包來(lái)使用和管理session,保存服務(wù)端和客戶端瀏覽器之間的會(huì)話狀態(tài)。那如何才能實(shí)現(xiàn)當(dāng)用戶刷新當(dāng)前頁(yè)面或者點(diǎn)擊頁(yè)面上的按鈕時(shí)重新刷新session的過(guò)期時(shí)間呢,接下來(lái)通過(guò)本文一起學(xué)習(xí)吧2016-02-02
nodejs報(bào)digital?envelope?routines::unsupported錯(cuò)誤的最新解決方法
這篇文章主要介紹了nodejs報(bào)digital?envelope?routines::unsupported錯(cuò)誤的最新解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
Node.js接入DeepSeek實(shí)現(xiàn)流式對(duì)話功能
隨著人工智能技術(shù)的發(fā)展,越來(lái)越多的服務(wù)和應(yīng)用開(kāi)始集成AI能力以提升用戶體驗(yàn),本文將介紹如何通過(guò)Node.js接入DeepSeek提供的API服務(wù),特別是其聊天完成(Chat?Completions)功能,為您的應(yīng)用增添智能對(duì)話能力,需要的朋友可以參考下2025-02-02
node基于async/await對(duì)mysql進(jìn)行封裝
這篇文章主要介紹了node基于async/await對(duì)mysql進(jìn)行封裝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
nodejs超出最大的調(diào)用棧錯(cuò)誤問(wèn)題
這篇文章主要介紹了nodejs超出最大的調(diào)用棧錯(cuò)誤問(wèn)題,需要的朋友可以參考下2017-12-12
webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法
今天小編就為大家分享一篇webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05

