Heim  >  Artikel  >  Web-Frontend  >  Konvertieren Sie NodeJS-Netzwerkbilder in Bildstreams

Konvertieren Sie NodeJS-Netzwerkbilder in Bildstreams

WBOY
WBOYOriginal
2023-05-25 13:24:561058Durchsuche

In modernen Webanwendungen gibt es auch einige alte Websites und Anwendungen, die immer noch traditionelle Methoden verwenden, um Bilder im Netzwerk in lokale Bildspeicherung und -verarbeitung umzuwandeln. In der Node.js-Umgebung können wir Netzwerkbilder jedoch problemlos direkt auf dem Server speichern, indem wir sie in Bildstreams konvertieren.

In diesem Artikel besprechen wir, wie man mit Node.js Netzwerkbilder in Bildstreams umwandelt und diese in Dateien oder Datenbanken speichert.

Zuerst müssen wir einige Node.js-Module installieren, um den Konvertierungsprozess von Netzwerkbildern und Bildstreams zu verwalten. Im Folgenden finden Sie eine Liste der Module, die installiert werden müssen:

  1. request – wird zum Abrufen von Bilddaten aus dem Netzwerk verwendet
  2. sharp – Bildverarbeitungsbibliothek, die zum Konvertieren von Bildern in Streams und andere Formate verwendet wird

Verwenden Sie den Befehl npm So installieren Sie diese beiden Bibliotheken:

npm install request sharp

Nach einer so einfachen Installation können wir mit der Verwendung dieser beiden Node.js-Module beginnen, um Netzwerkbilder in Bildströme umzuwandeln. Das Folgende ist ein Beispielcode:

const request = require('request');
const sharp = require('sharp');

const url = 'https://yourwebsite.com/image.jpg';
const options = {
  url: url,
  encoding: null
};

request.get(options, (err, response, buffer) => {
  if (err) throw err;
  
  sharp(buffer)
    .png()
    .toBuffer((err, data, info) => {
      if (err) throw err;
      
      // 在此处,我们可以将data写入文件或数据库
      // 例如,如果要将图片存储到文件夹中:
      // fs.writeFileSync('test.png', data);
      
      // 或者,如果要将图片存储到MongoDB数据库中:
      // const collection = db.collection('images');
      // collection.insertOne({ data: data });
    });
});

In diesem Beispielcode verwenden wir zunächst die Anforderungsbibliothek, um Bilddaten von der angegebenen URL zu laden. Wir haben encoding als null angegeben, da wir die ursprünglichen binären Bilddaten erhalten müssen, anstatt sie in Text oder JSON-Format zu konvertieren. Nachdem wir die Bilddaten erhalten haben, verwenden wir das Sharp-Modul, um sie in einen PNG-Format-Stream zu konvertieren, damit wir sie in nachfolgenden Vorgängen speichern oder verarbeiten können. encodingnull,这是因为我们需要获取原始的二进制图片数据,而不是将其转换为文本或JSON格式。获取到图片数据后,我们使用sharp模块将其转换为PNG格式的流,这样我们就可以在后续的操作中进行存储或处理。

在上述示例代码中,我们可以将流写入文件或MongoDB数据库中。要将流数据写入文件,可以使用fs模块的fs.writeFileSync()函数,创建一个新的文件并写入流数据。要将流数据写入MongoDB数据库中,我们首先需要创建一个MongoDB连接,然后选定一个集合(例如mycollection),再调用数据库的insertOne()

Im obigen Beispielcode können wir den Stream in eine Datei oder eine MongoDB-Datenbank schreiben. Um Stream-Daten in eine Datei zu schreiben, können Sie die Funktion fs.writeFileSync() des Moduls fs verwenden, um eine neue Datei zu erstellen und Stream-Daten zu schreiben. Um Streaming-Daten in die MongoDB-Datenbank zu schreiben, müssen wir zunächst eine MongoDB-Verbindung erstellen, dann eine Sammlung auswählen (z. B. mycollection) und dann insertOne() der Datenbank aufrufen Funktion, schreibt Daten in die Datenbank. Bei den Daten handelt es sich hier um die von den oben genannten Streams generierten Buffer-Instanzobjektdaten.

Jetzt wissen Sie, wie Sie Netzwerkbilder in Bildstreams umwandeln und diese in der Node.js-Umgebung speichern oder verarbeiten. Dies ist sehr nützlich für Webanwendungen, die Netzwerkbilder verarbeiten müssen. Beachten Sie, dass Sie vor der Konvertierung in ein anderes Format andere Vorgänge am Bildstream durchführen können, z. B. Komprimierung, Skalierung oder Drehung. 🎜

Das obige ist der detaillierte Inhalt vonKonvertieren Sie NodeJS-Netzwerkbilder in Bildstreams. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn