Maison  >  Article  >  interface Web  >  Comment convertir des photos en pixmaps avec Nodejs

Comment convertir des photos en pixmaps avec Nodejs

PHPz
PHPzoriginal
2023-04-17 16:45:021098parcourir

Avec l'avancement continu de la technologie et le développement d'Internet, la demande de photos et de vidéos sur Internet est de plus en plus élevée. Pour chaque programmeur, nous devons maîtriser certaines compétences de base, telles que la conversion de photos. Aujourd'hui, parlons de la façon de convertir des photos en images pixel à l'aide de Nodejs.

Tout d’abord, jetons un coup d’œil à ce qu’est une image en pixels. Une image pixel est une image composée de pixels, ce qui signifie qu'une image pixel est un moyen de représenter une image sur un ordinateur. Il s'agit de la couleur et de la position de chaque pixel. Par conséquent, nous pouvons modifier la carte des pixels en manipulant la couleur et la position du pixel.

Dans Nodejs, nous pouvons utiliser la bibliothèque Pngjs pour manipuler des images en pixels. Pngjs est un encodeur/décodeur PNG en streaming qui vous permet d'encoder et de décoder des images PNG à l'aide de Nodejs, ce qui facilite la tâche des développeurs travaillant avec JPEG et GIF.

Tout d'abord, nous devons utiliser le module fs (système de fichiers) de Nodejs pour lire la photo, puis utiliser la bibliothèque Pngjs pour convertir l'image en fichier PNG. L'exemple de code est le suivant :

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);
});

Dans le code ci-dessus, nous utilisons la méthode createReadStream pour lire l'image, puis utilisons la méthode createWriteStream pour enregistrer le fichier png. Ensuite, nous utilisons la nouvelle méthode PNG() pour convertir le flux d'images en fichier PNG, et une fois l'analyse de l'image terminée, nous créons un flux de fichier de sortie et l'enregistrons sur le disque dur.

Ensuite, nous devons convertir l'image en image pixel. En Pngjs, nous pouvons utiliser la méthode getPixel pour obtenir la couleur du pixel. L'exemple de code est le suivant :

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
      // ...
    }
  }
});

Dans le code ci-dessus, nous utilisons la méthode getPixel pour obtenir la couleur de chaque pixel, puis l'enregistrons dans l'espace colorimétrique RVB (rouge, vert et bleu). Nous pouvons effectuer n'importe quelle opération sur la couleur des pixels dans l'espace RVB, comme le réglage de la luminosité, du contraste, de la teinte, de la saturation, etc.

Enfin, nous utilisons la méthode pack() dans la bibliothèque Pngjs pour reconditionner les pixels dans une image PNG, et utilisons la méthode createWriteStream pour l'enregistrer sur le disque dur. L'exemple de code est le suivant :

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);
});

Dans le code ci-dessus, nous réenregistrons la couleur des pixels dans les données et la reconditionnons au format PNG à l'aide de la méthode pack(). Enfin, nous le sauvegardons sur le disque dur. Maintenant, nous avons réussi à convertir des photos en pixel art !

Pour résumer, nous avons utilisé le module fs de Nodejs pour lire les données de l'image, puis avons utilisé la bibliothèque Pngjs pour les convertir au format PNG. Ensuite, nous utilisons la méthode getPixel pour obtenir la couleur de chaque pixel, l'opérer et l'enregistrer à nouveau dans les données. Enfin, nous utilisons la méthode pack() pour reconditionner les données et les enregistrer sur le disque dur à l'aide du module fs.

Grâce à l'introduction de cet article, nous pouvons maîtriser comment utiliser Nodejs pour convertir des photos en images pixel, et également comprendre l'utilisation de base de la bibliothèque Pngjs. Que vous développiez une application Nodejs ou autre chose, ces conseils vous aideront à mieux manipuler et manipuler les images.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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