因此,我创建了一个程序,将一张图片复制到excel文档中,并将文档中的单元格与像素的颜色相同。下面是我的代码。
from PIL import Image
import xlsxwriter
image = xlsxwriter.Workbook('Image.xlsx')
image_sheet = image.add_worksheet()
with Image.open("11111.jpg") as px:
cookie = px.load()
cookie2 = Image.open("11111.jpg")
image_pixels = 0
image_pixels_2 = 0
cookie_height = cookie2.height
cookie_width = cookie2.width
image_sheet.set_column(0, cookie_width, 2.14)
while image_pixels <= cookie_height - 1:
print(image_pixels)
while image_pixels_2 <= cookie_width - 1:
rgb = '#%02x%02x%02x' % cookie[image_pixels_2, image_pixels]
cell_format = image.add_format()
cell_format.set_shrink()
cell_format.set_bg_color(rgb)
image_sheet.write(image_pixels, image_pixels_2, ' ', cell_format)
image_pixels_2 += 1
image_pixels += 1
if image_pixels_2 >= cookie_width:
image_pixels_2 = 0
image.close()
它产生了文件,但是,当我打开excel文件时,它说它是不可读的,并删除了所有的格式化。我不知道为什么会这样。该文件有时是可读的,但其他时候它不是。
Excel有 一个文件中唯一的格式限制为64,000个。. XlsxWriter可以删除替换重复的格式,但您的程序可能超过了64k的格式限制。
你可以通过改变你的程序来检查,比如打印出使用的唯一格式的数量。
unique = {}
while image_pixels <= cookie_height - 1:
print(image_pixels)
while image_pixels_2 <= cookie_width - 1:
rgb = '#%02x%02x%02x' % cookie[image_pixels_2, image_pixels]
unique[rgb] = 1
cell_format = image.add_format()
cell_format.set_shrink()
cell_format.set_bg_color(rgb)
image_sheet.write(image_pixels, image_pixels_2, ' ', cell_format)
image_pixels_2 += 1
image_pixels += 1
if image_pixels_2 >= cookie_width:
image_pixels_2 = 0
image.close()
print('Unique fomats = ', len(unique))