gpt4 book ai didi

python - TypeError : argument 1 must be ImagingCore, 不是 ImagingCore

转载 作者:行者123 更新时间:2023-11-28 23:04:22 25 4
gpt4 key购买 nike

在 Windows 下我得到这个错误。如何修复 PIL?

这是错误:TypeError:参数 1 必须是 ImagingCore,而不是 ImagingCore

#!/usr/bin/python
## -*- coding: utf-8 -*-

from PIL import Image, ImageFont
import ImageDraw, StringIO, string
from random import *
from math import *

import os
SITE_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))

class Captcha3d(object):

_hypot = 4
_xx, _yy = 35, 70
_CIMAGE = None
_CHARS = string.ascii_lowercase + string.ascii_uppercase + string.digits
_TEXT = ''

def __init__(self):
self._CIMAGE = Image.new("RGB", (self._yy * self._hypot, self._xx * self._hypot), (255,255,255))
self.generateCode()
self.render()

def imageColorAllocate(self, r,g,b):
hexchars = "0123456789ABCDEF"
hexcolor = hexchars[r / 16] + hexchars[r % 16] + hexchars[g / 16] + hexchars[g % 16] + hexchars[b / 16] + hexchars[b % 16]
return int(hexcolor, 16)

def generateCode(self):
chars = self._CHARS
self._TEXT = "".join(choice(chars) for x in range(randint(3, 3)))

def getText(self):
return self._TEXT

def getProection(self, x1,y1,z1):
x = x1 * self._hypot
y = z1 * self._hypot
z = -y1 * self._hypot

xx = 0.707106781187
xy = 0
xz = -0.707106781187

yx = 0.408248290464
yy = 0.816496580928
yz = 0.408248290464 # 1/sqrt(6)

cx = xx*x + xy*y + xz*z
cy = yx*x + yy*y + yz*z + 20*self._hypot

return [cx, cy]

def zFunction(self, x,y):
z = 2.6
if self._CIMAGE.getpixel((y/2,x/2)) == (0,0,0):
z = 0
if z != 0:
z += float(randint(0,60))/100
z += 1.4 * sin((x+self.startX)*pi/15) * sin((y+self.startY)*pi/15)
return z

def render(self):
fontSans = ImageFont.truetype(os.path.join(SITE_PATH, "data", "fonts", "FreeSans.ttf"), 14)

draw = ImageDraw.Draw(self._CIMAGE)

whiteColor = 'white'
draw.rectangle([0, 0, self._yy * self._hypot, self._xx * self._hypot], fill=whiteColor)

#textColor = 'black'
#imgtext = Image.open("i8n.png")
#self._CIMAGE.paste(imgtext, (0,0))
imgtext = Image.new("1", (self._yy * self._hypot, self._xx * self._hypot), (1))
drawtext = ImageDraw.Draw(imgtext)
drawtext.text((1,0), self._TEXT, font=fontSans, fill=0)
self._CIMAGE.paste(imgtext, (0,0))

#draw.text((2,0), self.text, font=fontSans, fill=textColor)

self.startX = randint(0,self._xx)
self.startY = randint(0,self._yy)

crd = {}

x = 0
while x < (self._xx+1):
y = 0
while y < (self._yy+1):
crd[str(x) + '&' + str(y)] = self.getProection(x,y,self.zFunction(x,y))
y += 1
x += 1

x = 0
while x < self._xx:
y = 0
while y < self._yy:
coord = []
coord.append((int(crd[str(x) + '&' + str(y)][0]),int(crd[str(x) + '&' + str(y)][1])))
coord.append((int(crd[str(x+1) + '&' + str(y)][0]),int(crd[str(x+1) + '&' + str(y)][1])))
coord.append((int(crd[str(x+1) + '&' + str(y+1)][0]),int(crd[str(x+1) + '&' + str(y+1)][1])))
coord.append((int(crd[str(x) + '&' + str(y+1)][0]),int(crd[str(x) + '&' + str(y+1)][1])))

c = int(self.zFunction(x,y)*32)
linesColor = (c,c,c)
draw.polygon(coord, fill=whiteColor, outline=linesColor)
#draw.polygon(coord, fill=whiteColor)
y += 1
x += 1

draw.rectangle([0, 0, self._xx, self._yy], fill=whiteColor)

#draw.text((2,0), self.text, font=fontSans, fill=textColor)
#imageString($this->image, 1, 3, 0, (microtime(true)-$this->time), $textColor);

del draw
#self._CIMAGE.save("image.png", "PNG")
return [self._CIMAGE, self._TEXT]

def main():
a = Captcha3d()
print a.getText()

if __name__ == '__main__':
main()

最佳答案

我在 OSX 10.6.8、Python 2.6.5 上也会发生这种情况。我认为某些类正在动态导入两次。

尝试改变

from PIL import Image, ImageFont

import Image, ImageFont

这对我有用。

关于python - TypeError : argument 1 must be ImagingCore, 不是 ImagingCore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com