Baru-baru ini saya menemui keperluan dalam projek: menghuraikan pakej apk dan ipa, kemudian muat naik ikon di dalam ke pelayan.
Soalan
Proses penghuraian dan muat naik agak mudah Saya menggunakan JSZip untuk menyahmampat apk dan ipa, dan kemudian memuat naik ikon yang terdapat di dalam ke pelayan. Walau bagaimanapun, masalah timbul apabila saya menggunakan imej dalam halaman web. Tidak ada masalah dengan ikon dalam apk, tetapi gambar yang dihuraikan dalam ipa boleh dipaparkan secara normal dalam safari, tetapi tidak boleh dipaparkan dalam mana-mana pelayar lain.
Sebab
Selepas Google, saya mendapati bahawa Apple telah mengoptimumkan imej png Sila baca artikel ini (lihat) untuk mendapatkan maklumat yang berguna dalam artikel:
Apple uses PNGCursh open source library to crush png images inside iPA files。
Penyelesaian
Sebagai jurutera hadapan, saya berharap dapat menggunakan javascript untuk menyelesaikan masalah ini. Malah, seseorang di luar negara telah menyelesaikannya sebelum ini.
Saya tidak dapat mencari satu yang tersedia, jadi saya terpaksa membuat makanan dan pakaian yang mencukupi sendiri dan menulis sendiri. Oleh itu nod-pngdefry. Fungsi node-pngdefry sangat jelas, iaitu menggunakan Javascript untuk memulihkan imej png yang diproses oleh Apple.
node-pngdefry sangat mudah digunakan dan menyokong baris arahan dan Node.js biasa:
Penggunaan baris arahan
pasang:
$ npm install -g pngdefry
kemudian jalankan:
$ pngdefry -i icon.png -o icon.new.png
Menggunakan dalam 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'); });
Ujian
$ npm test
Alamat Projek