2009-09-08 46 views

Trả lời

31

Để tải:

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

Để xác minh có thể sử dụng PIL

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

Nếu bạn chỉ muốn xác minh điều này là một hình ảnh ngay cả khi dữ liệu hình ảnh không hợp lệ: Bạn có thể sử dụng imghdr

import imghdr 
imghdr.what('ignore', img) 

Phương pháp kiểm tra tiêu đề và xác định loại hình ảnh. Nó sẽ trả về None nếu hình ảnh không thể nhận dạng được.

5

Downloading thứ

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

Thẩm định rằng đó là một hình ảnh có thể được thực hiện bằng nhiều cách. Kiểm tra khó khăn nhất là mở tệp bằng Thư viện hình ảnh Python và xem liệu nó có phát ra lỗi hay không.

Nếu bạn muốn kiểm tra loại tệp trước khi tải xuống, hãy xem loại mime mà máy chủ từ xa cung cấp.

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

điều Cùng sử dụng httplib2 ...

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

Đối với phần của câu hỏi liên quan đến sao chép hình ảnh từ xa, đây là một câu trả lời lấy cảm hứng từ this answer:

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) 

Lưu ý rằng cách tiếp cận này sẽ hoạt động để sao chép tệp từ xa của bất kỳ loại phương tiện nhị phân nào.

Các vấn đề liên quan