Inhaltsverzeichnis
1. Inhaltliche Einführung
二、node压缩图片
Heim Web-Frontend js-Tutorial Wie komprimiere ich Bilder mit Node.js? Methodeneinführung

Wie komprimiere ich Bilder mit Node.js? Methodeneinführung

Jul 23, 2021 am 09:50 AM
node.js 压缩图片

Wie komprimiere ich Bilder mit Node.js? Im folgenden Artikel erfahren Sie, wie Sie mit Node.js eine Bildkomprimierung erreichen.

Wie komprimiere ich Bilder mit Node.js? Methodeneinführung

1. Inhaltliche Einführung

Vor einiger Zeit habe ich ein Vscode-Plugin zum Hochladen von Bildern auf Qiniu entwickelt Damals fehlte noch eine Funktion: Diesmal war es so endlich behoben; gleichzeitig kann ein Legacy-Fehler (der Editor bleibt hängen, wenn der Link Leerzeichen enthält) als voll funktionsfähiges Plug-in angesehen werden. Interessierte Freunde können nach dem Plug-in suchen upload-to-qiniu in Vscode zur Installation. upload-to-qiniu进行安装。

【推荐学习:《nodejs 教程》】

效果预览:

Wie komprimiere ich Bilder mit Node.js? Methodeneinführung

二、node压缩图片

一开始是打算用TinyPNG的API实现图片压缩,但是尝试过后发现压缩速度特别慢,而且好像还要花钱,果断就放弃了。改为使用imagemin

这里是有一个坑的: 由于imagemin不可以直接压缩图片,而是需要依赖imagemin-jpegtranimagemin-pngquant,但是在安装imagemin-pngquant时会安装不了,找到了一个原因是说这个库是基于一些底层语言实现,所以不能直接安装,需要在电脑上安装另一个依赖libpng

安装libpng

直接贴一个安装brew的地址:zhuanlan.zhihu.com/p/90508170,只要对着他说的敲命令基本上就可以安装brew啦。最后我们再执行brew install libpng,等到libpng安装成功后,到项目中安装imagemin-pngquant就可以安装上了。

代码实现压缩图片根据需求我们肯定不希望他将图片压缩后放在文件夹里,而是需要在代码中直接获取到压缩后的内容,直接上传到七牛。那么就要用imagemin.buffer,这个方法通过接收一个buffer对象,经过压缩后再返回一个buffer【Empfohlenes Lernen: „nodejs Tutorial

"]

Effektvorschau:

Wie komprimiere ich Bilder mit Node.js? Methodeneinführung

2. Node komprimiert Bilder

Wie komprimiere ich Bilder mit Node.js? MethodeneinführungZuerst hatte ich geplant, die API von TinyPNG zu verwenden, um eine Bildkomprimierung zu erreichen, aber nachdem ich es versucht hatte Ich habe festgestellt, dass die Komprimierungsgeschwindigkeit sehr hoch ist. Es war langsam und schien Geld zu kosten, also habe ich entschieden aufgegeben. Verwenden Sie stattdessen imagemin

.

Hier gibt es eine Gefahr: Da imagemin Bilder nicht direkt komprimieren kann, sondern auf imagemin-jpegtran und imagemin-pngquant angewiesen ist Bei der Installation von imagemin-pngquant kann es nicht installiert werden. Ein Grund dafür ist, dass diese Bibliothek auf einigen zugrunde liegenden Sprachen basiert und daher nicht direkt installiert werden kann. Sie müssen eine andere Abhängigkeit libpng installieren auf dem Computer. <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/image/497/177/673/1627004063688068.png" class="lazy" title="1627004063688068.png" alt="Wie komprimiere ich Bilder mit Node.js? Methodeneinführung"></p>Libpng installieren<p></p> <h2 data-id="heading-2">Veröffentlichen Sie direkt die Adresse für die Installation von brew: <a href="https://zhuanlan.zhihu.com/p/90508170" target="_blank" ref="nofollow noopener noreferrer">zhuanlan. zhihu.com/p/90508170<strong>, Sie können brew grundsätzlich installieren, indem Sie den Befehl eingeben, wie er sagt. Abschließend führen wir <code>brew install libpng aus. Nachdem libpng erfolgreich installiert wurde, installieren wir imagemin-pngquant im Projekt und es kann installiert werden.

Code zum Komprimieren von Bildern

Entsprechend den Anforderungen möchten wir auf keinen Fall, dass er die Bilder komprimiert und in den Ordner legt. Stattdessen müssen wir den komprimierten Inhalt direkt im Code abrufen und ihn direkt auf Qiniu hochladen . Dann müssen wir imagemin.buffer verwenden. Diese Methode empfängt ein buffer-Objekt und gibt nach der Komprimierung einen buffer zurück Der Puffer wird direkt auf Qiniu hochgeladen. Das Folgende ist die Code-Implementierung:

// 获取buffer
export const getBufferFromFile = (filePath: string): Promise<Buffer> => {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, function (err: any, res: any) {
      if (!err) {
        resolve(res)
      }
    })
  })
}


// 压缩图片,传入图片文件路径,通过getBufferFromFile方法转为buffer 后进行压缩
const imageGzip = async (loaclFile: string): Promise<any> => {
  const bufferFile = await getBufferFromFile(loaclFile)
  let res
  try {
    res = await imagemin.buffer(bufferFile, {
      plugins: [
        imageminJpegtran(),
        imageminPngquant({
          quality: [0.6, 0.8],
        }),
      ],
    })
  } catch (err) {
    console.log(&#39;error&#39;, err)
    res = null
  }
  return res
}
Nach dem Login kopieren
Auf diese Weise können wir ihn jetzt einfach umschreiben und auf Qiniu hochladen: Da es vorher keine Komprimierung gab können den Dateipfad direkt an Qiniu übergeben. Nach der Komprimierung müssen wir nur den Puffer hochladen:

gzipImage? putStream, ansonsten müssen wir nur formUploader .putFile hochladen

Jetzt können wir mit dem Effekt experimentieren:

Wählen Sie ein PNG-Bild auf dem Computer aus:

🎜Nachdem Sie es mit unserem Plug-in hochgeladen haben, öffnen Sie den Link zu siehe: 🎜🎜🎜🎜🎜Das Bild wurde erfolgreich komprimiert La~~🎜🎜🎜3. Beheben Sie die verbleibenden Fehler🎜🎜🎜Ich habe ein Problem festgestellt, das heißt, manchmal bleibt der Editor plötzlich hängen Es stellte sich heraus, dass der Grund darin lag, dass es immer hängenblieb, wenn Leerzeichen im Link vorhanden waren, und dann andere Inhalte angezeigt wurden. Es kam auch keine Reaktion. Entfernen Sie also einfach die Leerzeichen in der Hover-Zeichenfolge und führen Sie dann die folgende Methode aus, um den Link zu erhalten: 🎜
// 当前行的文本内容
const currentLineText = document.lineAt(position).text.replace(/\s+/g, "")
Nach dem Login kopieren
🎜🎜 IV. Ende 🎜🎜🎜🎜 Denn bei der Vorschau von Bildern beim Hover, um zu verhindern, dass einige Bilder zu groß und langsam werden Zum Laden wurden von Qinius Zuschneideparameter hinzugefügt, sodass andere Arten von Bildlinks möglicherweise nicht in der Vorschau angezeigt werden können, was später behoben wird ^ ^. Ich habe den Plug-in-Quellcode auf 🎜github🎜 hochgeladen, jeder ist herzlich eingeladen, auf Start zu klicken ^ ^. Wenn Sie bessere Ideen für Plug-Ins haben, können Sie auch miteinander kommunizieren. 🎜🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Einführung in die Programmierung🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonWie komprimiere ich Bilder mit Node.js? Methodeneinführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie komprimiert MeituXiuXiu die Bildgröße? Meituxiuxiu-Tutorial zum Ändern der Fotogröße in KB! Wie komprimiert MeituXiuXiu die Bildgröße? Meituxiuxiu-Tutorial zum Ändern der Fotogröße in KB! Mar 15, 2024 pm 10:34 PM

1. Wie komprimiert MeituXiuXiu die Bildgröße? Meituxiuxiu-Tutorial zum Ändern der Fotogröße in KB! 1. Rufen Sie die Meitu Xiu Xiu-App auf und klicken Sie auf Bildverschönerung. 2. Gehen Sie zur Oberfläche „Letzte Projekte“ und wählen Sie die Bilder aus, die komprimiert werden müssen. 3. Rufen Sie die Bildoberfläche auf und klicken Sie unten auf die Bearbeitungsoption. 4. Wechseln Sie zur Bearbeitungsoberfläche und wählen Sie das Bildformat aus. 5. Nachdem die Auswahl erfolgreich war, klicken Sie zur Eingabe auf die Größe in der Mitte des Bildes. 6. Rufen Sie die Schnittstelle zur Größenänderung auf, passen Sie die Größe des Bildes an und klicken Sie nach Abschluss der Anpassung auf Speichern. 7. Kehren Sie zur Bildoberfläche zurück, suchen Sie das Häkchensymbol in der unteren rechten Ecke und klicken Sie darauf. 8. Klicken Sie abschließend in der Schnittstelle für komprimierte Bilder auf Speichern und das Bild wird komprimiert.

Ein Artikel über Speichersteuerung in Node Ein Artikel über Speichersteuerung in Node Apr 26, 2023 pm 05:37 PM

Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Mar 29, 2023 pm 06:02 PM

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Dec 13, 2022 pm 08:00 PM

Die Auswahl eines Docker-Images für Node mag trivial erscheinen, aber die Größe und potenziellen Schwachstellen des Images können erhebliche Auswirkungen auf Ihren CI/CD-Prozess und Ihre Sicherheit haben. Wie wählen wir also das beste Node.js-Docker-Image aus?

Lassen Sie uns ausführlich über das File-Modul in Node sprechen Lassen Sie uns ausführlich über das File-Modul in Node sprechen Apr 24, 2023 pm 05:49 PM

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Node.js 19 ist offiziell veröffentlicht, lassen Sie uns über seine 6 Hauptfunktionen sprechen! Node.js 19 ist offiziell veröffentlicht, lassen Sie uns über seine 6 Hauptfunktionen sprechen! Nov 16, 2022 pm 08:34 PM

Node 19 wurde offiziell veröffentlicht. Dieser Artikel wird Ihnen eine detaillierte Erklärung der 6 Hauptfunktionen von Node.js 19 geben. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns über den GC-Mechanismus (Garbage Collection) in Node.js sprechen Lassen Sie uns über den GC-Mechanismus (Garbage Collection) in Node.js sprechen Nov 29, 2022 pm 08:44 PM

Wie führt Node.js GC (Garbage Collection) durch? Der folgende Artikel führt Sie durch.

Lassen Sie uns über die Ereignisschleife in Node sprechen Lassen Sie uns über die Ereignisschleife in Node sprechen Apr 11, 2023 pm 07:08 PM

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

See all articles