获取错误索引器错误:bytearray索引超出范围PIL

2024-10-02 12:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

更改图像样式后运行代码时出错

在此之前,图像与我的代码配合得很好

这是我的密码:

def fixedBW(RGB):
    return RGB[0]

def BW8(RGB):
    return round(RGB[0] / (255 / 8))

bits = 8

ATable = ['.','*','|','/','(','&','O','%']

filen = input('file: ')

im = Image.open(filen)

im2 = im.convert('P')
im2.save('8-bit.png')


pix = im.load()
pix2 = im2.load()

for x in range(im.size[0]):
    for y in range(im.size[1]):
        im.putpixel((x, y), (pix2[x,y],pix2[x,y],pix2[x,y]))

im.save('8-bit-BW.png')

pixels = []

for x in range(im.size[0]):
    for y in range(im.size[1]):
        #print(BW8(pix[x,y]))
        pixels.append(ATable[BW8(pix[x,y])])
    pixels.append('\n')
        
#print(pixels)
finpixs = ""
for x in range(len(pixels)):
    finpixs = finpixs + pixels[x]
#print(finpixs)

ASCIItxt = open(filen + '.txt', 'w+')
ASCIItxt.write(finpixs)
print('Wrote ' + str(len(finpixs)) + ' chars to ' + filen + '.txt')

我得到这个错误:

Traceback (most recent call last):
  File "main.py", line 26, in <module>
    im.putpixel((x, y), (pix2[x,y],pix2[x,y],pix2[x,y]))
  File "AppData\Local\Programs\Python\Python37\lib\site-packages\PIL\Image.py", line 1743, in putpixel
    value = self.palette.getcolor(value)
  File "AppData\Local\Programs\Python\Python37\lib\site-packages\PIL\ImagePalette.py", line 110, in getcolor
    self.palette[index + 512] = color[2]
IndexError: bytearray index out of range

当我改变我的图像时,它是一个X白色的形状,周围有一些颜色,它工作了,然后是随机颜色混合,然后是一个不工作的粘贴人,我得到了这个错误。此外,图像大小始终为32x32

谢谢你的阅读


Tags: in图像forsizerangergbprintim

热门问题