Ich habe ein PNG-Bild und habe seine Base64-PNG-Zeichenfolgendarstellung erhalten. Es ist immer noch ziemlich groß und ich würde gerne wissen, ob es noch weiter komprimiert werden kann. Ist das überhaupt möglich?
Ich verwende Selenium 2 (Java), um einen Screenshot der aktuellen Webseite zu erstellen, wandle ihn als Base64-String um und sende diesen String an den JavaScript-Executor, um das Image neu zu erstellen und einige Bildverarbeitungen vorzunehmen. Wenn diese Zeichenfolgengröße jedoch zu groß ist, gibt der Server eine Ausnahme zurück.
Die einfache Antwort: Nein - nicht ohne die "druckbare Zeichenkette" zu verlieren
Normalerweise verwendet PNG bereits eine ausgefeilte Komprimierung, wie sie in ZIP-Dateien verwendet wird. Wenn Sie also vor der base64-Codierung komprimieren, erhalten Sie nur eine sehr begrenzte Größenreduzierung.
Wenn Sie die Komprimierung nach der base64-Codierung anwenden, wird es wieder zu Binärdaten. In diesem Fall können Sie einfach den Schritt base64-Codierung überspringen.
Wenn es ein Problem mit dem Netzwerk und nicht wirklich die Größe Ihrer Zeichenfolge ist, funktionierte das für mich, als ich meine Bilder an eine Mongo-Datenbank schickte.
Unter Verwendung von Express.js
wird das Limit von bodyParser standardmäßig auf 1056k gesetzt
So können Sie das Problem beheben, indem Sie das Limit wie folgt ändern.
Tags und Links javascript image base64 selenium-webdriver compression