2014-12-05 8 views
0

최근에 나는 손으로 쓴 방법으로 파이썬을 배우려고 노력했다.그림 편집하기 Python에서 편집하기

이 특정 코드에서 인증서를 대량 생성하는 프로그램을 만들려고했습니다. 이 문제를 해결하기 위해 저의 머리를 부숴 버렸습니다. 코드는 기존 사진을 덮어 쓰고 기본 변수에서 깨끗한 사진을 다시받는 대신 다시 저장합니다.

base = Image.open("generico/Certificado.png")criacao(nome) 함수로 이동 시키려고했지만 "기본"이 정의되지 않았다는 말을 듣습니다.

draw = ImageDraw.Draw(base) 
NameError: name 'base' is not defined 

도움을 많이 받으실 수 있습니다!

import zlib, datetime 
from PIL import Image, ImageFont, ImageDraw 


curso = input("Course: ") 
inicio = input("Date of start (DD/MM): ") 
fim = input("Date ended (formato DD/MM/AAAA): ") 
horas = input ("Total hours spent: ") 
professor = input("Professor: ") 
quantos = int(input("Number of students: ")) 
contador = int(0) 


base = Image.open("generico/Certificado.png") 
font = ImageFont.truetype("arial.ttf", 50) 
draw = ImageDraw.Draw(base) 


def criacao(nome): 
    nome_arquivo = str(datetime.date.today()) + " " + nome[0].upper() + nome[1:len(nome)].lower() + " " + curso 
    draw.text((750,1065), nome.upper(), font=font, fill=(0,0,0,0)) 
    draw.text((750,1414), curso.upper(), font=font, fill=(0,0,0,0)) 
    draw.text((1220,1625), inicio, font=font, fill=(0,0,0,0)) 
    draw.text((1500,1625), fim, font=font, fill=(0,0,0,0)) 
    draw.text((1540,1750), horas + ".", font=font, fill=(0,0,0,0)) 
    draw.text((1740,2130), str(datetime.date.today()), font=font, fill=(0,0,0,0)) 
    draw.text((1550,2680), professor, font=font, fill=(0,0,0,0)) 
    base.save("Criado/" + nome_arquivo + ".png") 


while contador < quantos: 
    criacao(input("Student's name: ")) 
    contador += 1 

답변

1

난 당신이 base를 정의하는 라인에 추가하여 draw = ImageDraw.Draw(base) 라인을 이동해야한다고 생각한다. 현재 오류는 base을 볼 수없는 행과 관련이 있으며 어쨌든 이미지 데이터를 조작하는 수단 인 것처럼 보입니다.

이 시도 :

font = ImageFont.truetype("arial.ttf", 50) 

def criacao(nome): 
    base = Image.open("generico/Certificado.png")  # move this line from above 
    draw = ImageDraw.Draw(base)      # this one too 

    nome_arquivo = str(datetime.date.today()) + " " + nome[0].upper() + nome[1:len(nome)].lower() + " " + curso 
    draw.text((750,1065), nome.upper(), font=font, fill=(0,0,0,0)) 
    draw.text((750,1414), curso.upper(), font=font, fill=(0,0,0,0)) 
    draw.text((1220,1625), inicio, font=font, fill=(0,0,0,0)) 
    draw.text((1500,1625), fim, font=font, fill=(0,0,0,0)) 
    draw.text((1540,1750), horas + ".", font=font, fill=(0,0,0,0)) 
    draw.text((1740,2130), str(datetime.date.today()), font=font, fill=(0,0,0,0)) 
    draw.text((1550,2680), professor, font=font, fill=(0,0,0,0)) 
    base.save("Criado/" + nome_arquivo + ".png") 
+0

당신이 alot을 감사합니다! –