如何在 Excel 文件中批量将 Base64 转换为图像

如何在 Excel 文件中批量将 Base64 转换为图像

我有一个 excel 文件,其中包含 500 行 Base64 格式的图像 URI(如图所示)。我需要将它们转换为图像并下载到我的计算机。有没有可以做到这一点的网站/工具/代码?

有些网站,但没有一个可以进行批量转换,只支持单张图像。

编辑1: 以下是一个例子我的 Excel 文件中的三个图像 URI:

感谢你的帮助。

Excel 的丑陋屏幕截图

答案1

如果您不害怕运行 Python 脚本,这里有一个快速脚本。

传入一个文本文件,每行包含一张 base64 图像。这将写出一系列图像,例如image0001.png,,image0002.png...

import fileinput
import base64

for index, line in enumerate(fileinput.input(), 1):
  if line.startswith('data:image/png;base64,'):
    with open('image{0:04}.png'.format(index), 'wb') as png:
       line = line.strip()
       png.write(base64.b64decode(line[22:] + '===='))

将其保存到类似文件中decode.py,然后使用

python3 decode.py input.txt

如果您的输入文件是只有一列的 CSV,那么它也是一个文本文件,因此您应该能够直接使用它(尽管 CSV 可能需要删除引号)。如果您确实必须在适当的 Excel 电子表格中接受输入,则将其导出到 CSV 是一个手动过程,因此如果可以的话,这是一个避免使用 Excel 的好理由。

根据您的评论,这里尝试使用该xlrd模块直接读取 Excel,但我(幸运的是)没有任何东西可以测试它。

import base64
import xlrd

workbook = xlrd.open_workbook("images.xlsx")
worksheet = workbook.sheet_by_name("Sheet1")

for idx in range(1, worksheet.nrows+1):
    excel_data = worksheet.cell(idx-1,0).value
    if excel_data.startswith('data:image/png;base64,'):
        with open('image{0:04}.png'.format(idx), 'wb') as png:
            png.write(base64.b64decode(excel_data.strip()[22:] + '===='))

您尝试使用 base64 数据而不是指定文件名的excel_data参数中的索引。从 1 运行到最后一行数据的编号。openidx

附录: 部分数据似乎有误。我设法使用以下技巧提取了您的图片,但我不确定它是否真的产生了正确的输出——这似乎对我尝试过的图片有效,但它可能会导致损坏,因为我只是删除了最后一个 base64 字符。

import fileinput
import base64
import binascii

for index, line in enumerate(fileinput.input(), 1):
  if line.startswith('data:image/png;base64,'):
    with open('image{0:04}.png'.format(index), 'wb') as png:
       line = line.strip()[22:]
       try:
         decoded = base64.b64decode(line + '====')
       except binascii.Error:
         decoded = base64.b64decode(line[0:-1] + '====')
       png.write(decoded)

答案2

Python 示例来自堆栈溢出

import base64
imgdata = base64.b64decode(imgstring)
filename = 'some_image.jpg'
with open(filename, 'wb') as f:
    f.write(imgdata)

要导入 Excel 文件,您可以使用xlrdStack Overflow 示例

相关内容