2012-11-02 34 views
5

Tôi có máy chủ nodejs nhận hình ảnh được mã hóa trong base64 thông qua websocket. Tôi muốn thực hiện một số thao tác hình ảnh trên những hình ảnh đó và gửi chúng trở lại. Tôi tìm kiếm một chút trên mạng để tìm một số thư viện để giúp tôi làm điều này, nhưng tất cả những gì tôi có thể tìm thấy là các thư viện chụp ảnh lưu trữ ở đâu đó ở phía máy chủ, thực hiện thao tác và lưu lại hình ảnh. Rõ ràng tất cả chúng đều là đầu vào một chuỗi chứa tên tệp của hình ảnh, vì vậy tôi đoán dưới mui xe, chúng đang tìm nạp hình ảnh theo cách thủ công thông qua luồng tệp.Thao tác hình ảnh trong NodeJS với dữ liệu hình ảnh base64

Câu hỏi của tôi là có thư viện có thể giúp tôi làm việc trực tiếp trên dữ liệu base64 (tức là chuyển dữ liệu làm đầu vào cho hàm) hoặc tôi nên lưu mỗi lần hình ảnh trên máy chủ, sửa đổi và gửi nó trở lại? Tôi không muốn đi với thứ hai bởi vì tôi đang làm việc trên một số ứng dụng hiệu suất cao, và tất cả điều này tiết kiệm/tải trông một sự lãng phí của chu kỳ. Nếu không, bạn có thấy một số cách khác tôi có thể đạt được điều này (có nghĩa là, nhận được các tập tin hình ảnh mà không cần tiết kiệm và tải nó trở lại, ví dụ)?

Cảm ơn.

Trả lời

2

Làm việc với Buffer s.

var img = new Buffer(img_string, 'base64'); 
// Work with your images like other tutorials do. 
+0

Tôi không chắc chắn điều này sẽ hoạt động, các thư viện dường như mong đợi một tên tệp làm đầu vào cho các chức năng của chúng, do đó tôi đoán chúng đang mở một luồng phim và tìm nạp hình ảnh theo cách thủ công. Tôi sẽ thử cái này. Cảm ơn! – Masiar

+0

@ Dễ dàng các thư viện phải làm việc với Bộ đệm đằng sau hậu trường. Họ có thể cần một filepath để mở tập tin như là một bộ đệm, nhưng tất cả đi xuống Buffers :-) –

+0

Tôi chắc chắn đồng ý :)! Nhưng API rõ ràng về loại đầu vào mong đợi. Tôi sẽ cố gắng trong một thời điểm nếu nguồn đầu vào có thể là một bộ đệm. Nếu đó là trường hợp, sau đó bạn thực hiện ngày của tôi. Nếu không thì hãy thử. Tôi sẽ cho bạn biết càng sớm càng tốt. – Masiar

0

Cái này có thể làm việc với "suối có thể đọc được": https://github.com/aheckmann/gm

Xem tập thứ hai của ví dụ trong readme.

+0

Có vẻ ổn. Vấn đề là tôi không thể tạo ReadableStream từ base64 Tôi có thể chuyển đổi trong một bộ đệm như @ Florian đã làm, nhưng định dạng duy nhất được chấp nhận là ReadableStream. – Masiar

Các vấn đề liên quan