Декодирование изображений base64 и сохранение в файл

Мне нужно сохранить несколько изображений base64 с веб-страницы в фактические файлы GIF и JPEG на моем жестком диске. Есть ли там утилита, которая может мне помочь? Я посмотрел вокруг, и либо я не вижу его, либо не понял, как его правильно использовать.

иными словами Я хочу взять картинки в этой ссылке на странице:

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

..и сохраните его в файл на моем ящике. Спасибо за вашу помощь.

22
задан bluish
25.04.2023 16:20 Количество просмотров материала 3311
Распечатать страницу

7 ответов

Я написал это, чтобы пойти другим путем (img в base64) для URI изображений. Я уверен, что вы могли бы обратить это за то, что вам нужно.

#!/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!')

обновление

* * здесь некоторый код который обратит вышеуказанное. Единственный нюанс заключается в том, что вам нужно знать, если он был в формате PNG, JPG и т. д. Это должно быть в URI данных изображений в HTML-странице, которую вы вытаскиваете из "img src= ' data: image/png;base64...". (Я предполагаю png ниже)*

#!/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!')
4
отвечен Justin 2023-04-27 00:08

Если вы используете Total Commander, он декодирует base64 / UUE при условии сохранения данных в файл с a .b64 или .расширение uue. Winzip и WinRar тоже это сделают.

2
отвечен ccpizza 2023-04-27 02:25

Я пошел на страницу, которую вы указываете, с Chrome. Щелкните правой кнопкой мыши на изображении, осмотрите элемент... Мы переходим к <img> тег с GIF-изображением в кодировке Base64, но на самом деле это простой заполнитель 1x1.

Поэтому мы можем перейти на вкладку "ресурсы" инспектора (далее элементов), и мы видим изображения в base64-кодировке в формате PNG.

Нажмите на данные: изображение слева, вы получите подробную информацию о ресурсе, включая предварительный просмотр. Вы можете щелкнуть правой кнопкой мыши на предварительный просмотр и сохранение изображения...

как рекомендовано, остерегайтесь проблем с авторским правом с этими изображениями...

Примечание: я попробовал другой способ: вы можете скопировать URL-адрес ресурсов и вставьте их в простой html-файл с <img src="<base64-encoded data>"> теги. Просмотреть HTML-файл в хорошем браузере, и вы можете сохранить изображения, нажатием правой кнопкой мыши на них.

2
отвечен PhiLho 2023-04-27 04:42

чтобы сохранить url-адрес данных во временный файл, вы можете использовать urlretrieve() в Python 3.4:

#!/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()))
2
отвечен jfs 2023-04-27 06:59

когда вы сохраняете веб-страницу из веб-браузера, она также должна сохранять изображения. В IE вы выбираете сохранить как веб-страницу, завершить. Изображения будут находиться в подпапке и будут в формате jpg или png - браузер имеет дело с любой кодировкой, используемой для передачи данных HTTP.

1
отвечен RedGrittyBrick 2023-04-27 09:16

существует ряд инструментов, которые могут помочь вам декодировать base64. Как лучше всего скачать что-то подобное во многом зависит от того, как вы к нему добираетесь.

не так много веб-трафика закодировано в base64... во многом потому, что это не очень эффективно, и это совсем не безопасно. (в base64-это не шифрование... он просто скрывает данные, чтобы сделать их не читаемыми людьми) Если вы можете получить необработанные данные потока в текстовый файл или что-то в этом роде... есть несколько способов собрать его заново. Кроме того данные не будут содержать сведения о файле... т. е. файл-название, размер, тип и т. д... это будет поток данных... и это до вас, чтобы определить, что это.

есть шанс, что мы сможем заглянуть туда, откуда поступают данные? ...это действительно поможет дать вам более подходящий ответ.

1
отвечен TheCompWiz 2023-04-27 11:33

Это смешно, потому что вы полностью дали мне ответ, позвольте мне поделиться тем, что я имею в виду. У меня был "data: image/gif;base64", а затем какая-то сумасшедшая строка base64. Я хотел преобразовать изображение обратно в JPEG, но я не знал, как это сделать, и я просто хотел сделать это быстро, не используя скрипт, python и т. д. (Хотя во многих случаях это прекрасный способ). Я только одно изображение нужно преобразовать прямо сейчас.

Как только вы показали мне тег " img src=", я сразу понял, что браузер уже понимает код base64. Я просто открываю текстовый документ, добавляю тег <img src="data:image/gif;base64,..."> сохранить как *.HTML расширение и открыв его в браузере (любое из них работает), кликнули правой кнопкой мыши по изображению и сохранили. Voila insta-изображение из base64.

спасибо!!

0
отвечен jacktrader 2023-04-27 13:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх