2012-11-02 15 views
5

Mam serwer nodejs, który odbiera obrazy zakodowane w base64 za pośrednictwem websocket. Chciałbym zrobić kilka zdjęć na tych zdjęciach i odesłać je. Szukałem trochę w sieci, aby znaleźć jakąś bibliotekę, która pomogłaby mi to zrobić, ale wszystko, co mogłem znaleźć, to biblioteki, które zbierają obrazy przechowywane gdzieś po stronie serwera, wykonują manipulację i zapisują obraz. Najwyraźniej wszystkie z nich przyjmują jako dane wejściowe ciąg znaków zawierający nazwę pliku obrazu, więc domyślam się, że pod maską pobierają obraz ręcznie przez strumień plików.Obsługa obrazu w NodeJS z danymi obrazu base64

Moje pytanie brzmi, czy istnieje biblioteka, która może mi pomóc pracować bezpośrednio na danych base64 (czyli przekazywać dane jako dane wejściowe do funkcji) lub czy powinienem zapisywać za każdym razem obraz na serwerze, modyfikować go i wysyłać to z powrotem? Wolałbym nie iść z tym ostatnim, ponieważ pracuję nad jakąś wydajną aplikacją, a całe to zapisywanie/ładowanie wygląda na marnowanie cykli. W przeciwnym razie, widzisz inny sposób, w jaki mógłbym to osiągnąć (to znaczy, na przykład pobranie pliku obrazu bez zapisania i załadowania go z powrotem)?

Dzięki.

Odpowiedz

2

Praca z Buffer s.

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

Nie jestem pewien, czy to zadziała, biblioteki najwyraźniej oczekują nazwy pliku jako wejścia do swoich funkcji, więc domyślam się, że otwierają strumień plików i przechodzą do ręcznego pobierania obrazu. W każdym razie spróbuję. Dzięki! – Masiar

+0

@Masiar biblioteki muszą współpracować z buforami za kulisami. Mogą potrzebować pliku ścieżki, aby otworzyć plik jako bufor, ale wszystko sprowadza się do buforów :-) –

+0

Zdecydowanie się zgadzam :)! Ale interfejs API jasno określa, jakiego rodzaju danych wejściowych oczekuje. Za chwilę spróbuję, jeśli źródłem wejściowym może być również bufor. Jeśli tak, to zrobiłeś mój dzień. W przeciwnym razie spróbuj. Dam ci znać jak najszybciej. – Masiar

0

Ten może pracować z „czytelnych strumienie”: https://github.com/aheckmann/gm

Zobacz drugi zbiór przykładów w readme.

+0

Wygląda dobrze. Problem polega na tym, że nie mogę utworzyć ReadableStream z base64 Mogę dokonać konwersji w buforze, tak jak zrobił to @Florian, ale jedynym zaakceptowanym formatem jest ReadableStream. – Masiar

Powiązane problemy