Tôi nên sử dụng thư viện nào để thao tác hình ảnh phía máy chủ trên Node.JS? [đóng cửa]


117

Tôi đã tìm thấy một danh sách khá lớn các thư viện có sẵn trên wiki Node.JS nhưng tôi không chắc cái nào trong số đó hoàn thiện hơn và cung cấp hiệu suất tốt hơn. Về cơ bản tôi muốn làm như sau:

  1. tải một số hình ảnh vào máy chủ từ các nguồn bên ngoài
  2. đặt chúng lên một tấm bạt lớn
  3. cắt và che chúng đi một chút
  4. áp dụng một hoặc hai bộ lọc
  5. Thay đổi kích thước hình ảnh cuối cùng và cung cấp liên kết đến nó

Điểm cộng lớn nếu gói nút hoạt động trên cả Linux và Windows .


Câu hỏi đã được trả lời ở đây: stackoverflow.com/questions/4541332/…
DjebbZ

2
2015: điều này cũng có vẻ hợp pháp: github.com/oliver-moran/jimp
jmunsch 21/02/16

@jm_____ stackoverflow vừa là Hỏi & Đáp vừa là wiki. vui lòng chỉnh sửa câu trả lời để nhiều người chú ý hơn.
Andrew Андрей Листочкин

Câu trả lời:


184

Trả lời câu hỏi của riêng tôi

Tôi đã dành hai ngày để tìm hiểu các thư viện đồ họa Node.js.

node-canvas

  • Tôi đã thử nó trước vì tôi khá quen thuộc với <canvas>API. Đó là một điểm cộng lớn cho một thư viện.
  • nó yêu cầu Cairo mà không có Windows tải xuống dễ dàng. Tôi đã tìm thấy nó trong bản phân phối GTK +.
  • hơn nữa nó cần mã ràng buộc thư viện gốc để được biên dịch khi cài đặt mô-đun. Nó sử dụng Node-Waf chưa được chuyển sang Windows.

gm

  • trưởng thành
  • chạy trên Windows mượt mà
  • tài liệu thì ổn nhưng không kỹ: Tôi đã phải tra cứu mã nguồn để tìm ra API nào có sẵn
  • Rất tiếc, không có cách nào dễ dàng để kết hợp hình ảnh với gm. Có lẽ có một số cách để đạt được điều đó nhưng tôi vẫn chưa tìm ra cách nào sau hai giờ dành cho nó.

node-imagemagick

  • Repo chính thức có rất ít lệnh ImageMagick cơ bản nhưng tôi đã sử dụng fork này (điều tốt là NPM có thể kéo thư viện trực tiếp từ kho git). Nó có các ràng buộc để montagethực hiện chính xác những gì tôi cần.
  • ImageMagick khá chậm , mặc dù nó hoạt động trên Windows.

Node-Vips

  • Điểm cộng lớn: nó sử dụng một thư viện VIPS đáng kinh ngạc mà tôi quen thuộc. VIPS rất nhanh và được tối ưu hóa cho hình ảnh lớn. Nó rất thông minh trong việc sử dụng tài nguyên phần cứng: nếu máy của bạn có nhiều RAM, nó sẽ thực hiện tất cả các xử lý trong bộ nhớ nhưng sẽ chuyển sang bộ nhớ đệm ổ cứng nếu bộ nhớ khan hiếm hoặc cần cho các ứng dụng khác.
  • giống như node-canvas, nó yêu cầu Node-Waf nên nó chưa có sẵn cho Windows.

Tôi cũng đã xem xét các thư viện khác từ danh sách nhưng hầu hết chúng đều rất non nớt hoặc không phù hợp với trường hợp sử dụng của tôi. Tôi thực sự muốn thử chuyển sang Node-Canvas hoặc Node-Vips khi Node-Waf được chuyển sang Windows nhưng cho đến khi đó tôi sẽ gắn bó với node-imagemagick.


44
Cảm ơn bạn đã trở lại để trả lời câu hỏi của riêng bạn. Viết lên tuyệt vời!
mpen

Trên Windows, gm có vẻ hơi chậm đối với tôi - mặc dù tôi nghĩ điều này một phần là do mất bao lâu để tạo ra các bản sao của tệp thực thi gm.
Gareth Oakley,

11
Thời gian đã thay đổi và NODE-Vips có 1yr + không có cập nhật. Thay vào đó, tôi khuyên bạn nên thêm Sharp vào danh sách. Nó cũng sử dụng VIPS và được duy trì activly: github.com/lovell/sharp
Simon Fakir

5
Đối với những người bước vào câu hỏi này ngày nay, LWIP là một lựa chọn thay thế tốt khác. Không có phụ thuộc bên ngoài, nó dựa vào một addon node.js C ++.
MaxArt

1
github.com/lovell/sharp , một liên kết nút khác cho libvips, hiện hoạt động trên Windows.
jcupitt

6

Tôi thực sự khuyên bạn nên kiểm tra gm bằng GraphicsMagick. Ổn định, nhiều tính năng, API sạch, tài liệu tuyệt vời và nhanh chóng.

Và nó hoạt động trên cả Windows và Linux / MacOS / BSD / ...


3

Cô ấy là liên kết để triển khai canvas dựa trên GDI +


1
Tôi không thể làm cho thứ này chạy chút nào. Tôi chỉ nhận được "% 1 không phải là ứng dụng Win32 hợp lệ" ngay khi tôi yêu cầu.
mpen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.