Entpacken von base64-Bildern und Speichern in eine Datei

29053
larryq

Ich muss ein paar base64-Bilder von einer Webseite in aktuelle GIF- und JPEG-Dateien auf meiner Festplatte speichern. Gibt es da draußen ein Hilfsprogramm, das mir helfen kann? Ich habe mich umgesehen und entweder sehe ich keine oder habe noch nicht herausgefunden, wie man sie richtig benutzt.

Mit anderen Worten, ich freue mich darauf, das in diesen Link eingebettete Bild auf eine Seite zu bringen:

<img src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" class="info" id="ext-gen1128"> 

..und speichern Sie es in einer Datei auf meiner Box. Danke für Ihre Hilfe.

4

7 Antworten auf die Frage

4
Justin

Ich habe dies geschrieben, um für Image-URIs den anderen Weg zu gehen (img to base64). Ich bin mir sicher, Sie könnten das für das, was Sie brauchen, umkehren.

#!/usr/bin/env python import sys import os import base64  if(__name__ == '__main__'): arglen = len(sys.argv) if arglen > 1: imgfile = open(sys.argv[1], 'rb').read() b64img = base64.b64encode(imgfile) file_name = os.path.splitext(sys.argv[1]) fname = file_name[0] fext = file_name[1]  b64imgfile = open(fname + fext + '.txt', 'w') for line in b64img: b64imgfile.write(line) print fname print fext print('done') else: print('No img file specified!') 

Aktualisieren

* Hier ist ein Code, der das obige umkehrt. Der einzige Nachteil ist, dass Sie wissen müssen, ob es sich um png, jpg usw. handelt. In den Daten-URIs der Bilder auf der HTML-Seite sollten Sie sie aus " img src =" data: image / png ; base64 .. ziehen. . " (Ich gehe davon aus, png unten) *

#!/usr/bin/env python import sys import os import base64  if(__name__ == '__main__'): arglen = len(sys.argv) if arglen > 1: b64file = open(sys.argv[1], 'rb').read() imgData = base64.b64decode(b64file) file_name = os.path.splitext(sys.argv[1]) fname = file_name[0] fext = '.png'  imgFile = open(fname + fext, 'wb') imgFile.write(imgData) print('done') else: print('No file specified!') 
2
ccpizza

Wenn Sie Total Commander verwenden, wird base64 / UUE dekodiert, sofern Sie die Daten in einer Datei mit der Erweiterung .b64 oder .uue speichern. Winzip und WinRar werden es auch tun.

2
PhiLho

Ich habe mit Chrome die Seite aufgerufen, auf die Sie verweisen. Klicken Sie mit der rechten Maustaste auf ein Bild, Ein Element prüfen ... Wir gehen zu einem <img>Tag mit einem Base64-kodierten Gif-Bild, aber das ist eigentlich ein einfacher 1x1-Platzhalter.
So können wir zur Registerkarte Ressourcen des Inspektors (neben der Elemente-Komponente) gehen und die Bilder von Interesse in Base64-kodierten PNG-Dateien sehen.
Klicken Sie auf die Daten: Bild links, Sie erhalten Details zu der Ressource, einschließlich einer Vorschau. Sie können mit der rechten Maustaste auf die Vorschau klicken und das Bild speichern ...

Beachten Sie bei diesen Bildern die Urheberrechtsprobleme ...

Hinweis: Ich habe eine andere Methode ausprobiert: Sie können die URL der Ressourcen kopieren und in eine einfache HTML-Datei mit <img src="<base64-encoded data>">Tags einfügen . Zeigen Sie die HTML-Datei in einem guten Browser an, und Sie können die Bilder speichern, indem Sie mit der rechten Maustaste darauf klicken.

2
jfs

Um die Daten-URL in einer temporären Datei zu speichern, können Sie sie urlretrieve()in Python 3.4 verwenden:

#!/usr/bin/env python3 from mimetypes import guess_extension from urllib.request import urlretrieve  # example image from http://tools.ietf.org/html/rfc2397 url = """data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH hhx4dbgYKAAA7""" filename, m = urlretrieve(url) print(filename, guess_extension(m.get_content_type())) 
Beeindruckend! Das verdient mehr Upvotes Cesar Canassa vor 6 Jahren 0
1
RedGrittyBrick

Wenn Sie eine Webseite über einen Webbrowser speichern, sollten auch die Bilder gespeichert werden. Im IE wählen Sie Speichern als Webseite, vollständig. Die Bilder befinden sich in einem Unterordner und liegen im JPG- oder PNG-Format vor. Der Browser kümmert sich um die für die HTTP-Datenübertragung verwendete Kodierung.

Ich habe es versucht und es ist eine großartige Idee. Die "Bilder" sind jedoch in einer CSS-Datei als base64-Zeichenfolgen definiert, und beim Speichern der Seite werden die CSS-Datei und nicht die eigentlichen Bilder gespeichert. (Siehe die URL, die ich unten in den Kommentar eingefügt habe, um zu erfahren, was ich damit zu tun habe und was ich speichern möchte.) Ich werde am Ende eine Bildschirmaufnahme machen und sie auf diese Weise speichern, aber es wäre schön, dies nicht zu tun . larryq vor 13 Jahren 0
Es sieht so aus, als würde die Site einige Anstrengungen unternehmen, um Leute davon abzuhalten, die Bilder zu kopieren. Ich würde woanders nachsehen, wo der Urheberrechtsinhaber ähnliche Bilder unter einer Creative-Commons-Lizenz verfügbar gemacht hat. RedGrittyBrick vor 13 Jahren 0
1
TheCompWiz

Es gibt eine Reihe von Tools, mit denen Sie base64 dekodieren können. Wie man am besten so etwas herunterlädt, hängt weitgehend davon ab, wie man dazu kommt.

Nicht viel Web-Traffic ist Base64-codiert ... hauptsächlich, weil er nicht sehr effizient ist und überhaupt nicht sicher ist. (base64 ist keine Verschlüsselung ... es verdeckt nur die Daten, um sie nicht für Menschen lesbar zu machen.) Wenn Sie die rohen Stream-Daten in eine Textdatei oder in eine solche Datei bringen können, gibt es mehrere Möglichkeiten, sie wieder zusammenzubauen. Darüber hinaus enthalten die Daten keine Informationen über die Datei ... dh Dateiname, Größe, Typ usw. ... Dies ist ein Datenstrom ... und es liegt an Ihnen, zu bestimmen, was es ist.

Gibt es eine Chance, einen Blick darauf zu werfen, woher die Daten stammen? ... es würde wirklich helfen, Ihnen eine passendere Antwort zu geben.

Sicher, die Seite, die ich mir anschaue, befindet sich unter http://dev.sencha.com/deploy/touch/examples/kitchensink/ (nur Chrome-Browser, ich habe Angst, funktioniert nicht in IE oder FireFox) Wenn Sie gehen Suchen Sie in den Beispielen auf der linken Seite nach "Benutzeroberfläche", dann nach "Bottom Tabs". Die Symbole unten auf der Seite haben das Base64-Format und sind in Tags eingebettet . Ich würde gerne an sie herankommen und sie in GIF-Dateien speichern. larryq vor 13 Jahren 0
0
jacktrader

Es ist komisch, weil du mir die Antwort gänzlich gegeben hast. Lass mich sagen, was ich meine. Ich hatte die 'data: image / gif; base64', gefolgt von einer verrückten Base64-Zeichenfolge. Ich wollte das Bild zurück in JPEG konvertieren, wusste aber auch nicht, wie es geht, und wollte es nur schnell, ohne ein Skript zu verwenden, Python usw. (obwohl dies in vielen Fällen ein guter Weg ist) Ich hatte gerade ein Bild, das ich gerade konvertieren musste.

Sobald Sie mir das Tag "img src =" gezeigt haben, ist mir sofort klar, dass der Browser den base64-Code bereits versteht. Ich öffne einfach ein Textdokument, fügte das Tag hinzu, <img src="data:image/gif;base64,...">speicherte es als * .html-Erweiterung und öffnete es im Browser (einer von ihnen funktioniert), klickte mit der rechten Maustaste auf das Bild und speicherte. Voila-Insta-Bild von base64.

Vielen Dank!!