2009-09-08 13 views

cevap

31

indirmek için: Resim verileri geçerli olmasa bile sadece bu bir görüntü doğrulamak isterseniz doğrulamak için

import urllib2 
img = urllib2.urlopen("http://example.com/image.jpg").read() 

PIL

import StringIO 
from PIL import Image 
try: 
    im = Image.open(StringIO.StringIO(img)) 
    im.verify() 
except Exception, e: 
    # The image is not valid 

kullanabilirsiniz:imghdr

'yi kullanabilirsiniz.

Yöntem, başlıkları kontrol eder ve görüntü türünü belirler. Resim tanımlanamazsa Hiçbiri dönmez.

5

İndirilmesi şeyler

import urllib 
url = "http://example.com/image.jpg" 
fname = "image.jpg" 
urllib.urlretrieve(url, fname) 

birçok yönden yapılabilir bir görüntü olduğunu doğrulanıyor. En zor kontrol, dosyayı Python Image Library ile açıyor ve bir hata atıp atmadığını görüyor.

Dosya türünü indirmeden önce kontrol etmek isterseniz, uzak sunucunun verdiği mime türüne bakın.

import urllib 
url = "http://example.com/image.jpg" 
fname = "image.jpg" 
opener = urllib.urlopen(url) 
if opener.headers.maintype == 'image': 
    # you get the idea 
    open(fname, 'wb').write(opener.read()) 
2

Aynı şey httplib2 ... kopyalama uzak görüntü açısından söz eden kısmı için

from PIL import Image 
from StringIO import StringIO 
from httplib2 import Http 

# retrieve image 
http = Http() 
request, content = http.request('http://www.server.com/path/to/image.jpg') 
im = Image.open(StringIO(content)) 

# is it valid? 
try: 
    im.verify() 
except Exception: 
    pass # not valid 
0

, burada this answer esinlenerek bir cevap değil kullanılarak:

import urllib2 
import shutil 

url = 'http://dummyimage.com/100' # returns a dynamically generated PNG 
local_file_name = 'dummy100x100.png' 

remote_file = urllib2.urlopen(url) 
with open(local_file_name, 'wb') as local_file: 
    shutil.copyfileobj(remote_file, local_file) 

Not o Bu yaklaşım, herhangi bir ikili ortam türünün uzak bir kopyasını kopyalamak için çalışacaktır.

İlgili konular