Maison  >  Article  >  interface Web  >  Nodejs répare les images png traitées par ipa_node.js

Nodejs répare les images png traitées par ipa_node.js

WBOY
WBOYoriginal
2016-05-16 15:15:091256parcourir

J'ai récemment rencontré un besoin dans un projet : analyser les packages apk et ipa, puis télécharger les icônes qu'ils contiennent sur le serveur.

Question

Le processus d'analyse et de téléchargement est relativement simple. J'utilise JSZip pour décompresser l'apk et l'ipa, puis télécharger l'icône trouvée à l'intérieur sur le serveur. Cependant, le problème survient lorsque j'utilise des images dans des pages Web. Il n'y a aucun problème avec les icônes de l'apk, mais les images analysées dans l'ipa peuvent être affichées normalement dans Safari, mais ne peuvent être affichées dans aucun autre navigateur.

Raison

Après Google, j'ai découvert qu'Apple avait optimisé les images png. Veuillez lire cet article (voir) pour plus de détails. Nous pouvons apprendre quelques informations utiles dans l'article :

.
Apple uses PNGCursh open source library to crush png images inside iPA files。

Solution

En tant qu'ingénieur front-end, j'espère utiliser javascript pour résoudre ce problème. En fait, quelqu'un à l'étranger l'a déjà résolu auparavant. NodeJS-PNDGefry peut le faire. Malheureusement, cela n'a pas été maintenu depuis trop longtemps et il ne peut plus fonctionner.

Je n’en ai pas trouvé de disponible, j’ai donc dû préparer moi-même suffisamment de nourriture et de vêtements et en écrire un moi-même. D'où node-pngdefry. La fonction de node-pngdefry est très claire, qui consiste à utiliser Javascript pour restaurer les images png traitées par Apple.

node-pngdefry est très simple à utiliser et prend en charge la ligne de commande et Node.js standard :

Utilisation de la ligne de commande

installer :

$ npm install -g pngdefry

puis exécutez :

$ pngdefry -i icon.png -o icon.new.png

Utilisation dans 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

Adresse du projet

node-pngdefry

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn