2012-12-11 23 views
6

Áp lực NodeJS docs nhấn mạnh rằng mã hóa chuỗi binary không được khuyến khích vì nó sẽ bị xóa tại một thời điểm nào đó trong tương lai.Làm thế nào để giải mã chuỗi mã hóa "nhị phân" thành đệm nhị phân thô?

Tuy nhiên, tôi đang cố gắng tạo hình thu nhỏ hình ảnh với mô-đun node-imagemagick, chỉ có thể xuất ra binary chuỗi được mã hóa.

Mục tiêu cuối cùng của tôi là gửi hình thu nhỏ được tạo dưới dạng BLOB vào cơ sở dữ liệu SQLite3 (tôi đang sử dụng node-sqlite3), vì vậy tôi đã tìm hình thu nhỏ dưới dạng đối tượng Bộ đệm nhị phân.

Làm cách nào để giải mã trực tiếp đầu ra được mã hóa binary từ node-imagemagick vào bộ đệm nhị phân thô (không chỉ bộ đệm chứa chuỗi được mã hóa binary)? Tôi không quan tâm về việc sử dụng base64 ...

Trả lời

3
var buffer = new Buffer(binaryString, "binary"); 

Thử nghiệm với:

$ node 
> var binaryString = "\xff\xfa\xc3\x4e"; 
> var buffer = new Buffer(binaryString, "binary"); 
> console.log(buffer); 
<Buffer ff fa c3 4e> 
+0

Oh. Điều đó thật đơn giản. Tôi đã giải thích sai tài liệu ... – Joshua

+1

Bạn không hiểu sai tài liệu. Họ nêu rõ rằng mã hóa "nhị phân" sẽ bị xóa! Tôi cũng đang chạy với cùng một vấn đề trong khi chụp đầu ra từ ImageMagick để lưu trữ vào MongoDB. "binary" là mã hóa duy nhất có vẻ hoạt động để có được STDOUT trong cơ sở dữ liệu chính xác. Vậy thay thế bằng cái gì? –

+0

@WouterHuysentruit nêu vấn đề với tác giả thư viện trên github để cập nhật mô-đun của họ để sử dụng bộ đệm ... nó chắc chắn sẽ được giải quyết trước khi '" nhị phân "' bị xóa khỏi nút? – Esailija

0

tôi không sử dụng đệm nút cho mã hóa.

Bạn có thể thử iconv-lite (https://www.npmjs.com/package/iconv-lite) nên này bao giờ bắt đầu thất bại:

var encode = require("iconv-lite"); 
var binaryString = "\xff\xfa\xc3\x4e"; 
var buffer = encode(binaryString, "binary"); 
console.log(buffer); 
// Prints <Buffer ff fa c3 4e>