web-dev-qa-db-de.com

ImageFont IO Fehler: Ressource kann nicht geöffnet werden

Ich bin neu in Python und habe versucht, den folgenden Code auszuführen. Ich habe die folgende Fehlermeldung "IOError: cannot open resource" erhalten. Ist dies auf die Tatsache zurückzuführen, dass einige der Bildeigenschaften nicht mehr vorhanden sind (z. B. Coval.otf), oder liegt dies möglicherweise an Schreib-/Lesebeschränkungen? lass es mich wissen - vielen Dank, 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

Der Grund dafür ist, dass Coval.otf nicht gelesen werden kann, wahrscheinlich weil es auf Ihrem System nicht vorhanden ist. Dies ist in ImageFont doc angegeben. Ich habe versucht, nach einer bestimmten Schriftart zu suchen und habe keine Möglichkeit gefunden, sie zu erwerben. Schauen Sie sich @ NewYork167 link an, wenn Sie müssen die Schriftart Coval verwenden. 

Um sich die Installation von Schriftarten zu ersparen, können Sie den Aufruf in eine auf Ihrem System vorhandene Schriftart ändern. Verwenden Sie die in example der Dokumente angegebene Schriftart:

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

Sie können Coval von hier aus installieren, um zu vermeiden, dass Sie Schriftarten auch in zukünftigen Code ändern müssen https://fontlibrary.org/de/font/bretan

1
Newyork167

Wenn Sie colab verwenden, müssen Sie den Pfad korrekt angeben. Nur arial.ttf zu schreiben, reicht nicht aus. So ermitteln Sie den Pfad, wenn dieser Schrifttyp in colab verfügbar ist: ! Fc-list oder ! Fc-list | grep "" und dann können Sie den gesamten Pfad hinzufügen . geben Sie hier die Bildbeschreibung ein

0
Siddhant Sinha

Bei den Schriftdateien für PIL unter Windows wird zwischen Groß- und Kleinschreibung unterschieden. Gehen Sie zu Windows/fonts:

Einige Schriftarten sind * .tff

Andere sind * .TFF

Sie müssen den tatsächlichen Dateinamen und nicht den Schriftartentitel verwenden, den Windows in der Systemsteuerung anzeigt.

0
Steve Watt

Für mich nach dem Laufen folgendes:

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

und verlinke dann die Schrift auf dem Mac durch:

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

Es hat perfekt funktioniert.

0
Eklil Khan