मुझे अपने सर्वर पर एक दूरस्थ छवि (उदाहरण के लिए http://example.com/image.jpg
) कॉपी करने की आवश्यकता है। क्या यह संभव है?मैं पाइथन में रिमोट छवि की प्रतिलिपि कैसे बना सकता हूं?
आप कैसे सत्यापित करते हैं कि यह वास्तव में एक छवि है?
मुझे अपने सर्वर पर एक दूरस्थ छवि (उदाहरण के लिए http://example.com/image.jpg
) कॉपी करने की आवश्यकता है। क्या यह संभव है?मैं पाइथन में रिमोट छवि की प्रतिलिपि कैसे बना सकता हूं?
आप कैसे सत्यापित करते हैं कि यह वास्तव में एक छवि है?
डाउनलोड करने के लिए:
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
उपयोग कर सकते हैं तो आप सिर्फ भले ही चित्र डेटा मान्य नहीं है यह एक छवि है सत्यापित करने के लिए करना चाहते हैं: आप imghdr
का उपयोग कर सकते हैंविधि हेडर की जांच करती है और छवि प्रकार निर्धारित करती है। अगर छवि पहचानने योग्य नहीं है तो यह वापस नहीं आएगा।
डाउनलोडिंग सामान
import urllib
url = "http://example.com/image.jpg"
fname = "image.jpg"
urllib.urlretrieve(url, fname)
सत्यापन किया जा रहा है कि यह एक छवि कई तरीकों से किया जा सकता है। सबसे कठिन जांच पाइथन छवि लाइब्रेरी के साथ फ़ाइल खोल रही है और देखें कि क्या यह एक त्रुटि फेंकता है।
यदि आप डाउनलोड करने से पहले फ़ाइल प्रकार को देखना चाहते हैं, तो रिमोट सर्वर देता है।
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())
यही बात 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
नकल एक रिमोट छवि के संबंध में विचाराधीन के भाग के लिए, यहाँ एक जवाब 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)
ध्यान दें कि यह दृष्टिकोण किसी भी बाइनरी मीडिया प्रकार की दूरस्थ फ़ाइल की प्रतिलिपि बनाने के लिए काम करेगा।