J'ai besoin de changer cette fonction de l'entrée URL vers une entrée de fichier local

def download_and_resize_image(url, new_width=256, new_height=256,display=False):

    _, filename = tempfile.mkstemp(suffix=".jpg")
    response = urlopen(url)
    image_data = response.read()
    image_data = BytesIO(image_data)
    pil_image = Image.open(image_data)
    pil_image = ImageOps.fit(pil_image, (new_width, new_height), Image.ANTIALIAS)
    pil_image_rgb = pil_image.convert("RGB")
    pil_image_rgb.save(filename, format="JPEG", quality=90)
    print("Image downloaded to %s." % filename)
    if display:
      display_image(pil_image)
    return filename

Ce code m'a été donné par mon professeur. Comment puis-je changer l'entrée dans un fichier local?

J'ai regardé dans la bibliothèque de requêtes mais je n'ai pas eu de chance avec une fonction. Existe-t-il une fonction prédéfinie pour récupérer un fichier local ou comment / quels changements dois-je apporter à la fonction prédéfinie?

0
reko ropinsen 18 mars 2019 à 19:00

2 réponses

Meilleure réponse

Passez simplement filepath comme argument et lisez à partir de fileapth. Essaye ça.

def download_and_resize_image(filepath, new_width=256, new_height=256,display=False):

# _, filename = tempfile.mkstemp(suffix=".jpg")
# response = urlopen(url)
# image_data = response.read()
# image_data = BytesIO(image_data)
pil_image = Image.open(filepath)
pil_image = ImageOps.fit(pil_image, (new_width, new_height), Image.ANTIALIAS)
pil_image_rgb = pil_image.convert("RGB")
pil_image_rgb.save(filename, format="JPEG", quality=90)
print("Image downloaded to %s." % filename)
if display:
display_image(pil_image)
return filename
0
Hayat 18 mars 2019 à 16:14

La méthode Image.open prend un chemin de fichier et un mode. Voir ici. Vous devriez pouvoir remplacer l'url par le chemin du fichier et le mettre dans Image.open

pil_image = Image.open(filepath)
0
Joe D 18 mars 2019 à 16:11