web-dev-qa-db-fra.com

ImageFont IO erreur: impossible d'ouvrir la ressource

Je suis nouveau sur Python et j'ai essayé de lancer le code suivant. J'ai reçu l'erreur suivante "IOError: cannot open resource". Est-ce dû au fait que certaines des caractéristiques de l'Image n'existent plus (par exemple, Coval.otf) ou est-ce potentiellement dû à des restrictions d'écriture/lecture? s'il vous plaît faites le moi savoir - merci beaucoup, W

import numpy as np
from PIL import Image, ImageDraw, ImageFont
from skimage import transform as tf

def create_captcha(text, shear=0, size=(100,24)):
    im = Image.new("L", size, "black")
    draw = ImageDraw.Draw(im)
    font = ImageFont.truetype(r"Coval.otf", 22)
    draw.text((2, 2), text, fill=1, font=font)
    image = np.array(im)
    affine_tf = tf.AffineTransform(shear=shear)
    image = tf.warp(image, affine_tf)
    return image / image.max()

%matplotlib inline
from matplotlib import pyplot as plt
image = create_captcha("GENE", shear=0.5)
9
user1885116

C'est parce que Coval.otf ne peut pas être lu, probablement parce qu'il n'existe pas sur votre système, ceci est spécifié dans le ImageFont docJ'ai essayé de rechercher la police spécifique et n'ai trouvé aucun moyen de l'acquérir. Regardez @/NewYork167 link si vous devez utiliser la police Coval

Quoi qu'il en soit, pour vous épargner la peine d'installer des polices, vous pouvez simplement changer l'appel en une police existant sur votre système, utilisez celle spécifiée dans exemple des documents:

font = ImageFont.truetype("arial.ttf", 15)
12

On dirait que vous pouvez installer Coval à partir d'ici pour vous éviter d'avoir à changer de police dans le code futur https://fontlibrary.org/en/font/bretan

1
Newyork167

Pour moi après avoir exécuté ce qui suit:

conda install -c conda-forge graphviz
conda install -c conda-forge python-graphviz

puis en reliant la police sur mac par:

 img = Image.open("tree1.png")
 draw = ImageDraw.Draw(img)
 font = ImageFont.truetype('/Library/Fonts/Arial.ttf', 15)

Cela a fonctionné parfaitement.

0
Eklil Khan