2016-04-15 11 views
1
if ".jpg" in link or ".png" in link: 
    fd = urllib.request.urlopen(link) 
    #Checks the dimensions of said image file 
    Image_file = io.BytesIO(fd.read()) 
    with Image.open(Image_file) as im: 
     width, height = im.size 
    print(im.size) 

Okay, also die Schaffung Ich bin ein Web-Crawler, die angeblich Bilder von der Größe 1920 zum Download von 1080. Das eigentliche Programm funktioniert, aber PyCharm und Codacy sagen, daß die Breite und Höhe Variablen nicht verwendet werden hier:Nicht verwendete Variablen in PyCharm

with Image.open(Image_file) as im: 
    width, height = im.size 

ich denke, das ist richtig, da ich sie nicht später im Code nennen, aber ich frage mich, ob es eine andere Möglichkeit, dies zu tun, damit ich nicht die ungenutzten Code Fehler angezeigt, wenn durch den Code schauen.

Ein weiteres Beispiel:

with Image.open(Image_file) as im: 
       width, height = im.size 
      #If the dimensions are 1920 by 1080, it will download the file in Wallpapers/filename_#WALL_#PAGE 
      #This format makes it easy to check which images was downloaded from which page 
      if(im.size == (1920, 1080)): 
       wall += 1 
       print("***FOUND***\t" + str(wall)) 
       urllib.request.urlretrieve(link, "Wallpapers/filename"+ str(wall) +"_" + str(page) +".png") 

könnte eine dumme Frage, aber ich schätze alle Antworten. :)

+0

Das ist, weil Sie nichts mit ihnen tun ... fügen Sie einen 'Druck (Breite, Höhe)' .... und es sollte gegangen (weiß nicht, warum Sie sogar 'drucken (im.size) ') – danidee

+0

Wenn Sie sie nicht anrufen, warum verwenden Sie sie dann? – Prof

+0

Es ist der einzige Weg, um die richtige Größe zu bekommen, sie speichern tatsächlich nichts darin. – lnus

Antwort

2

Meine Lösung

von

Swapping
with Image.open(Image_file) as im: 
      width, height = im.size 

für

im = Image.open(Image_file) 

es funktionierte viel besser. :)

+0

Ich weiß, das ist ein alter Thread, aber das ist eine gefährliche Änderung, da es die Datei nicht schließt, sondern ändern Sie einfach 'width, height = im.size' zu' image_size = im.size' und verwenden Sie 'image_size' wo du willst d verwende 'im.size'. Auf diese Weise wird die Datei ordnungsgemäß geschlossen und Sie haben das Tupel bei Bedarf verfügbar und keine nicht verwendeten Variablen. –

2

Dieses Verfahren kann für Ihre Zwecke vereinfachen

Zum Beispiel:

from StringIO import StringIO 

imageURL = img.get('src') 
fd = urllib.request.urlopen(link) 
image_name = imageName + '.bmp' 

i = Image.open(StringIO(fd.content)) 

# i.save(dirName + '/' + image_name) 
+0

Das funktionierte auch, aber ich musste von io import StringIO verwenden, da Python 3.x nicht über das StringIO-Modul verfügt Ihre Hilfe! :) – lnus