Python代码将图片转为Excel

通过Python脚本实现将一张图片(horse.jpg)转换为Excel文件,每个单元格的背景色对应图片的一个像素点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写了一小段Python代码,将图片转为了Excel,纯属娱乐。原理很简单,就是将图片每个像素的颜色填充到Excel对应的单元格中。

原图(horse.jpg):




转换后的Excel文档(horse.jpg.xlsx):




转换后的截图:




放大截图:




代码如下,就15行:

[python]  view plain  copy
  1. from PIL import Image  
  2. import openpyxl  
  3. from openpyxl.styles import PatternFill, Fill  
  4.   
  5. imageFileName = 'horse.jpg' #图片文件名  
  6. image = Image.open(imageFileName) #打开图片  
  7. wb = openpyxl.Workbook() #创建Excel  
  8. sheet = wb.create_sheet(imageFileName) #创建sheet  
  9. imgW, imgH = image.size #获取图片大小  
  10. for w in range(imgW):  
  11.     for h in range(imgH):  
  12.         #将每个像素的颜色填充到对应cell的背景色中  
  13.         rgba = image.getpixel((w,h))  
  14.         colorHex = hex(rgba[0])[2:].zfill(2) + hex(rgba[1])[2:].zfill(2) + hex(rgba[2])[2:].zfill(2)  
  15.         fill = PatternFill(fill_type = 'solid', start_color=colorHex, end_color=colorHex)  
  16.         sheet.cell(row = h + 1, column = w + 1).fill = fill  
  17. wb.save(imageFileName + '.xlsx'#保存xlsx文件  
### 使用Python读取图片数据并保存到Excel文件 #### 方法概述 为了完成将图片数据通过 Python 读取并转换为 Excel 文件的任务,可以结合多个库来实现这一目标。以下是具体方法: 1. **使用 Pillow 库加载和处理图片** Pillow 是一个强大的图像处理库,能够轻松加载各种格式的图片,并将其转换为适合存储的数据形式。 2. **利用 openpyxl 插入图片Excel 中** Openpyxl 提供了直接向 Excel 工作簿插入图片的功能,可以通过 `Image` 类型对象完成此操作。 3. **借助 Pandas 处理其他数据结构(可选)** 如果需要同时保存表格数据和其他信息,则可以考虑使用 Pandas 来管理 DataFrame 数据并与图片一起写入同一个 Excel 文件中。 #### 实现代码示例 以下是一个完整的解决方案,展示如何从本地路径读取一张图片并将它嵌入到一个新的 Excel 文档里: ```python from PIL import Image import openpyxl from openpyxl.drawing.image import Image as XLImage # 加载图片 img_path = 'example.jpg' pillow_img = Image.open(img_path) # 创建新的 Excel 工作簿 wb = openpyxl.Workbook() ws = wb.active # 调整单元格大小以便容纳图片 ws.row_dimensions[1].height = pillow_img.height * 0.75 # 假设每像素高度对应约 0.75 行高 for col in range(pillow_img.width // 8): # 每字符宽度约为 8px ws.column_dimensions[openpyxl.utils.get_column_letter(col + 1)].width = 2 # 添加图片至指定位置 (A1 单元格为例) xlsx_image = XLImage(img_path) ws.add_image(xlsx_image, 'A1') # 保存工作簿 output_file = 'output_with_image.xlsx' wb.save(output_file) print(f"带有图片Excel 文件已成功保存为 {output_file}") ``` 注意,在上述脚本执行完毕之后记得关闭工作簿以释放资源[^3]。 如果还需要进一步自定义样式或者批量插入多张照片等功能扩展的话,可以根据实际需求调整相应参数设置。 --- #### 关键技术点解析 - **PIL.Image.open():** 此函数用于打开给定路径下的图像文件,并返回一个表示该图像的对象实例。这一步骤对于后续任何关于这张特定图的操作都是必需的前提条件[^4]。 - **OpenPyXL 的 Image 支持:** 在 openpyxl 中引入了一个专门用来代表外部图形资源的类——drawing.image.Image 。我们只需传入原始图片的位置字符串即可生成这样一个实体,随后调用 Worksheet 对象上的 add_image() 方法就能把其附加到某个具体的单元格区域之上[^3]。 - **动态调整行列尺寸匹配图片比例:** 当我们将一幅较大分辨率的作品放入电子表格当中时,默认情况下可能不会完全显示出来。因此有必要手动计算合适的宽高数值赋值给对应的属性字段,从而确保最终呈现效果理想[^5]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值