Chcę przeanalizować żądany obraz z mojego interfejsu API REST na łańcuch podstawowy64.Jak analizować w base64 napisać obraz binarny z odpowiedzi?
Po pierwsze ... Myślałem, że to będzie łatwe, wystarczy użyć funkcji window.btoa()
na ten cel.
Kiedy próbuję to zrobić w takiej części mojej aplikacji:
.done(function(response, position) {
var texture = new Image();
texture.src = "data:image/png;base64," + window.btoa(response);
Mam kolejny błąd: Uncaught InvalidCharacterError: Nie udało się wykonać 'btoa' na 'Okno': Łańcuch do być zakodowane zawiera znaki spoza zakresu Latin1.
Jak czytam tutaj: javascript atob returning 'String contains an invalid character'
Ten problem występuje z powodu newlines in the response
i dlatego window.btoa()
powiodło się. Każdy format obrazu binarnego oczywiście będzie miał znaki nowej linii ... Ale od powyższego linku sugestia polegała na usunięciu/zamianie tych znaków - jest to dla mnie zła sugestia, ponieważ jeśli usunąć/zastąpić niektóre znaki z obrazu binarnego to po prostu być zepsuty.
Oczywiście, możliwe alternatywy odnoszą się do projektowania API: - dodać kilka funkcji, które zwracają reprezentacji base64 - dodać kilka funkcji, które zwracają link do obrazka
Gdybym nie naprawi to, zwrócę base64 reprezentację z serwera, ale nie podoba mi się taki sposób.
Czy istnieje jakiś sposób rozwiązania mojego problemu z obsługą obrazu binarnego z odpowiedzi, jak pokazano powyżej w części ekranu, czyż nie?
Co używasz bok API? – FabianCook
@FabianCook Gdzie dokładnie? Gdzie zasugerowałem zmianę API na powrót base64/url lub gdzie? Jeśli przeczytałeś mi uważnie, chcę znaleźć sposób, aby go nie używać i spróbować użyć innej metody/sztuczki. Aby uzyskać odpowiedź base64 od strony serwera - nie jest to problem, ale chcę znaleźć sposób, aby obsłużyć go jako obraz binarny. –
Ahh okay. Rozejrzą się. Wstrzymać. – FabianCook