Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menukar foto menjadi pixmaps dengan Nodejs

Bagaimana untuk menukar foto menjadi pixmaps dengan Nodejs

PHPz
PHPzasal
2023-04-17 16:45:021098semak imbas

Dengan kemajuan teknologi yang berterusan dan perkembangan Internet, permintaan orang ramai terhadap gambar dan video di Internet semakin tinggi. Bagi setiap pengaturcara, kita perlu menguasai beberapa kemahiran asas, seperti penukaran foto. Hari ini, mari kita bincangkan tentang cara menukar foto kepada imej piksel menggunakan Nodejs.

Pertama, mari kita lihat apa itu imej piksel. Imej piksel ialah gambar yang terdiri daripada piksel, yang bermaksud imej piksel ialah cara mewakili imej pada komputer. Ia terdiri daripada warna dan kedudukan setiap piksel Oleh itu, kita boleh menukar kesan peta piksel dengan memanipulasi warna dan kedudukan piksel.

Dalam Nodejs, kita boleh menggunakan perpustakaan Pngjs untuk memanipulasi imej piksel. Pngjs ialah penstriman pengekod/penyahkod PNG yang membolehkan anda mengekod dan menyahkod imej PNG menggunakan Nodejs, menjadikannya lebih mudah untuk pembangun yang bekerja dengan JPEG dan GIF.

Pertama, kita perlu menggunakan modul fs (sistem fail) Nodejs untuk membaca foto, dan kemudian gunakan pustaka Pngjs untuk menukar imej kepada fail PNG. Kod sampel adalah seperti berikut:

const fs = require('fs');
const PNG = require('pngjs').PNG;

const input = fs.createReadStream('image.jpg');
const output = fs.createWriteStream('image.png');

input.pipe(new PNG()).on('parsed', function() {
  this.pack().pipe(output);
});

Dalam kod di atas, kami menggunakan kaedah createReadStream untuk membaca imej, dan kemudian menggunakan kaedah createWriteStream untuk menyimpan fail png. Kemudian, kami menggunakan kaedah PNG() baharu untuk menukar strim imej kepada fail PNG dan selepas penghuraian imej selesai, kami mencipta strim fail output dan menyimpannya ke cakera keras.

Seterusnya, kita perlu menukar imej kepada imej piksel. Dalam Pngjs, kita boleh menggunakan kaedah getPixel untuk mendapatkan warna piksel. Kod sampel adalah seperti berikut:

const fs = require('fs');
const PNG = require('pngjs').PNG;

const input = fs.createReadStream('image.png');

input.pipe(new PNG()).on('parsed', function() {
  for (let y = 0; y < this.height; y++) {
    for (let x = 0; x < this.width; x++) {
      const idx = (this.width * y + x) << 2;

      // get the pixel color (R, G, B, A)
      const red = this.data[idx];
      const green = this.data[idx + 1];
      const blue = this.data[idx + 2];
      const alpha = this.data[idx + 3];

      // convert pixel color to another format
      // ...
    }
  }
});

Dalam kod di atas, kami menggunakan kaedah getPixel untuk mendapatkan warna setiap piksel, dan kemudian menyimpannya ke warna RGB (merah, hijau dan biru) angkasa lepas. Kami boleh melakukan sebarang operasi pada warna piksel dalam ruang RGB, seperti melaraskan kecerahan, kontras, warna, ketepuan, dsb.

Akhir sekali, kami menggunakan kaedah pack() dalam pustaka Pngjs untuk membungkus semula piksel ke dalam imej PNG dan menggunakan kaedah createWriteStream untuk menyimpannya ke cakera keras. Kod sampel adalah seperti berikut:

const fs = require('fs');
const PNG = require('pngjs').PNG;

const input = fs.createReadStream('image.png');
const output = fs.createWriteStream('output.png');

input.pipe(new PNG()).on('parsed', function() {
  for (let y = 0; y < this.height; y++) {
    for (let x = 0; x < this.width; x++) {
      const idx = (this.width * y + x) << 2;

      // get the pixel color (R, G, B, A)
      const red = this.data[idx];
      const green = this.data[idx + 1];
      const blue = this.data[idx + 2];
      const alpha = this.data[idx + 3];

      // convert pixel color to another format
      // ...

      // set the pixel color (R, G, B, A)
      this.data[idx] = red;
      this.data[idx + 1] = green;
      this.data[idx + 2] = blue;
      this.data[idx + 3] = alpha;
    }
  }

  this.pack().pipe(output);
});

Dalam kod di atas, kami menyimpan semula warna piksel ke dalam data dan menggunakan kaedah pack() untuk membungkusnya semula ke dalam format PNG. Akhirnya, kami menyimpannya ke cakera keras. Kini, kami telah berjaya menukar foto menjadi seni piksel!

Untuk meringkaskan, kami menggunakan modul fs Nodejs untuk membaca data imej, dan kemudian menggunakan pustaka Pngjs untuk menukarnya kepada format PNG. Seterusnya, kami menggunakan kaedah getPixel untuk mendapatkan warna setiap piksel, mengendalikannya dan menyimpannya ke data semula. Akhir sekali, kami menggunakan kaedah pack() untuk membungkus semula data dan menyimpannya ke cakera keras menggunakan modul fs.

Melalui pengenalan artikel ini, kami boleh menguasai cara menggunakan Nodejs untuk menukar foto kepada imej piksel, dan juga memahami penggunaan asas pustaka Pngjs. Sama ada anda sedang membangunkan aplikasi Nodejs atau sesuatu yang lain, petua ini akan membantu anda memanipulasi dan memanipulasi imej dengan lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk menukar foto menjadi pixmaps dengan Nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn