Giter VIP home page Giter VIP logo

Comments (5)

jodal avatar jodal commented on May 20, 2024 4

Two alternatives, pasted by @adamcik the other day:

import pil

def option1(file):
    parser = pil.ImageFileParser()
    try:
        while True:
            data = file.read(1024)
            if not data:
                break
            parser.feed(data)
        image = parser.close()
    except IOError as e:
        print 'Bad image: %s' % e

def option2(path):
    image = pil.Image.open(path)
    try:
        image.load()
    except IOError as e:
        print 'Bad image: %s' % e

from comics.

adamcik avatar adamcik commented on May 20, 2024 3

Seems image.verify() will not catch half downloaded files it seems, while Image Magick's identify will. However, using image.load() will cause IOError: image file is truncated (232 bytes not processed) so that would probably be worth a try.

from comics.

adamcik avatar adamcik commented on May 20, 2024

Other possible checks could be:

  • Ensure that file has some minimum number of colors
  • Ensure that content-size from http header matches size of downloaded file
  • Ensure that file size matches file size that header indicates

from comics.

adamcik avatar adamcik commented on May 20, 2024

Also im.getcolors(maxcolors) returns None once maxcolors is passed, so one could use im.getcolors(3) is None as at test to ensure that image has at least three colors. Not sure if this would add any value over just .verify() - but nice to know about at least.

http://www.pythonware.com/library/pil/handbook/image.htm#Image.getcolors

from comics.

jodal avatar jodal commented on May 20, 2024

option1 in the listing above is exactly the same as Django do in django/core/files/images.py to get the height and width from the image, so I would think option would be redundant in addition to using Django's ImageField.

option2 has been implemented in ac358a0.

from comics.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.