2012-12-11 8 views
6

The NodeJS docs Podkreśla, że ​​kodowanie ciągów znaków binary jest silnie odradzane, ponieważ zostanie upuszczone w pewnym momencie w przyszłości.Jak odkodować "binarny" zakodowany ciąg w surowym binarnym buforze?

Próbuję jednak generować miniaturki obrazów z modułem node-imagemagick, który może generować tylko kodowane ciągi binary.

Moim celem końcowym jest przesłanie wygenerowanej miniatury jako BLOB do bazy danych SQLite3 (używam node-sqlite3), więc pomyślałem, że potrzebuję miniatury jako binarnego obiektu buforowego.

Jak bezpośrednio dekodować kodowane wyjście binary z node-imagemagick do surowego bufora binarnego (nie tylko bufor zawierający kodowany ciąg znaków binary)? Nie jestem zależy na użyciu base64 ...

Odpowiedz

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

Testowane z:

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

oh. To było proste. Źle zinterpretowałem dokumenty ... – Joshua

+1

Nie źle zinterpretowałeś dokumenty. Wyraźnie stwierdzają, że "binarne" kodowanie zostanie usunięte! Pracuję też nad tym samym problemem podczas przechwytywania danych wyjściowych z ImageMagick do przechowywania w MongoDB. "binary" jest jedynym kodowaniem, które wydaje się działać, aby poprawnie pobrać STDOUT z bazy danych. Więc jaka jest alternatywa? –

+0

@WouterHuysentruit podnieść problem z autorem biblioteki na github, aby zaktualizować swój moduł do korzystania z buforów ... na pewno zostanie rozwiązany zanim '" binarny "' zostanie usunięty z węzła? – Esailija

0

nie używam Buffer węzła do kodowania.

Można spróbować iconv-lite (https://www.npmjs.com/package/iconv-lite) powinno to zawsze zaczyna się niepowodzeniem:

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>