Library mana yang harus saya gunakan untuk manipulasi gambar sisi server di Node.JS? [Tutup]

117

Saya menemukan daftar pustaka yang tersedia cukup besar di Node.JS wiki tetapi saya tidak yakin mana yang lebih matang dan memberikan kinerja yang lebih baik. Pada dasarnya saya ingin melakukan hal berikut:

  1. memuat beberapa gambar ke server dari sumber eksternal
  2. letakkan di satu kanvas besar
  3. potong dan tutupi sedikit
  4. terapkan satu atau dua filter
  5. Ubah ukuran gambar akhir dan berikan tautan ke sana

Nilai tambah besar jika paket node berfungsi di Linux dan Windows .

Andrew Андрей Листочкин
sumber
Pertanyaan sudah terjawab di sini: stackoverflow.com/questions/4541332/…
DjebbZ
2
2015: ini juga tampak sah: github.com/oliver-moran/jimp
jmunsch
@jm_____ stackoverflow adalah sebuah T&J dan wiki. merasa bebas untuk mengedit jawabannya agar lebih banyak orang yang menyadarinya.
Andrew Андрей Листочкин

Jawaban:

184

Menjawab pertanyaan saya sendiri

Saya menghabiskan dua hari untuk menggali pustaka grafis Node.js.

node-kanvas

  • Saya mencobanya dulu karena saya cukup paham dengan <canvas>API. Ini nilai tambah yang sangat besar untuk perpustakaan.
  • itu membutuhkan Kairo yang tidak memiliki unduhan Windows yang mudah. Saya menemukannya dalam distribusi GTK +.
  • selain itu, diperlukan kode binding library asli untuk dikompilasi pada instalasi modul. Ini menggunakan Node-Waf yang belum di-porting ke Windows.

gm

  • dewasa
  • berjalan di Windows dengan lancar
  • dokumen tidak masalah tetapi tidak menyeluruh: Saya harus melihat kode sumber untuk mencari tahu API apa yang tersedia
  • sayangnya tidak ada cara mudah untuk menggabungkan gambar dengan gm. Mungkin ada beberapa cara untuk mencapainya tetapi saya belum menemukan satu pun setelah dua jam dihabiskan dengannya.

node-imagemagick

  • Repo resmi memiliki sangat sedikit perintah ImageMagick dasar yang tercakup tetapi saya menggunakan garpu ini (hal yang baik bahwa NPM dapat menarik perpustakaan langsung dari repositori git). Ini memiliki binding montageyang melakukan apa yang saya butuhkan.
  • ImageMagick cukup lambat , meskipun bekerja di Windows.

Node-Vips

  • Nilai tambah besar: ia menggunakan perpustakaan VIPS luar biasa yang saya kenal. VIPS sangat cepat dan dioptimalkan untuk gambar besar. Sangat cerdas dalam memanfaatkan sumber daya perangkat keras: jika mesin Anda memiliki banyak RAM, ia akan melakukan semua pemrosesan dalam memori tetapi akan beralih ke cache hard drive jika memori langka atau diperlukan untuk aplikasi lain.
  • sama seperti node-canvas, ia membutuhkan Node-Waf sehingga belum tersedia untuk Windows.

Saya juga melihat perpustakaan lain dari daftar tetapi kebanyakan dari mereka sangat tidak dewasa atau tidak sesuai dengan kasus penggunaan saya. Saya benar-benar ingin mencoba bermigrasi ke Node-Canvas atau Node-Vips ketika Node-Waf di-porting ke Windows tetapi sampai saat itu saya akan tetap menggunakan node-imagemagick.

Andrew Андрей Листочкин
sumber
44
Terima kasih telah kembali untuk menjawab pertanyaan Anda sendiri. Tulisan yang bagus!
mpen
Pada Windows gm tampak agak lambat bagi saya - meskipun saya pikir ini sebagian karena berapa lama waktu yang dibutuhkan untuk menelurkan contoh gm yang dapat dieksekusi.
Gareth Oakley
11
Waktu berubah dan NODE-Vips memiliki 1 tahun + tidak ada pembaruan. Saya merekomendasikan untuk menambahkan Sharp ke daftar sebagai gantinya. Ia juga menggunakan VIPS dan secara aktif dipertahankan: github.com/lovell/sharp
Simon Fakir
5
Bagi mereka yang mengajukan pertanyaan ini sekarang, LWIP adalah alternatif lain yang bagus. Tidak ada dependensi eksternal, ini bergantung pada addon node.js C ++.
MaxArt
1
github.com/lovell/sharp , node lain yang mengikat libvips, sekarang berfungsi di Windows.
jcupitt
6

Saya sangat menyarankan Anda untuk memeriksa gm dengan GraphicsMagick. Stabil, kaya fitur, API bersih, dokumen hebat, dan cepat.

Dan itu berfungsi baik di Windows dan Linux / MacOS / BSD / ...

Pierre
sumber
3

Ini adalah tautan ke implementasi kanvas berdasarkan GDI +

pastorgluk
sumber
1
Aku tidak bisa menjalankannya sama sekali. Saya baru saja mendapatkan "% 1 bukan aplikasi Win32 yang valid" segera setelah saya membutuhkannya.
mpen