복붙노트

[PYTHON] 어떻게 파이썬에서 원격 이미지를 복사합니까?

PYTHON

어떻게 파이썬에서 원격 이미지를 복사합니까?

내 서버에 원격 이미지 (예 : http://example.com/image.jpg)를 복사해야합니다. 이것이 가능한가?

이것이 실제로 이미지인지 어떻게 확인합니까?

해결법

  1. ==============================

    1.다운로드:

    다운로드:

    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 imghdr
    imghdr.what('ignore', img)
    

    메서드는 헤더를 확인하고 이미지 유형을 결정합니다. 이미지를 식별 할 수없는 경우 없음을 반환합니다.

  2. ==============================

    2.물건 다운로드 중

    물건 다운로드 중

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

    이미지인지 확인하는 방법은 여러 가지가 있습니다. 가장 어려운 검사는 파일을 Python Image Library로 열고 오류가 있는지 확인하는 것입니다.

    다운로드하기 전에 파일 유형을 확인하려면 원격 서버에서 제공하는 MIME 유형을 확인하십시오.

    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() )
    
  3. ==============================

    3.httplib2를 사용하는 것과 동일한 작업 ...

    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
    
  4. ==============================

    4.원격 이미지 복사와 관련하여 질문의 일부분에 대해서는 다음 답변을 참고하십시오.

    원격 이미지 복사와 관련하여 질문의 일부분에 대해서는 다음 답변을 참고하십시오.

    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)
    

    이 방법은 모든 바이너리 미디어 유형의 원격 파일을 복사하는 데 유용합니다.

  5. from https://stackoverflow.com/questions/1394721/how-do-i-copy-a-remote-image-in-python by cc-by-sa and MIT license