Comments (5)
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.
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.
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.
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.
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)
- fowllanguage stopped working?
- Issues setting this up HOT 2
- Migrate data from django-invitation to django-invitations HOT 1
- Build UI for sending invitations with django-invitations
- Modernize deployment setup
- Port from Python 2.7 to 3.7+
- Upgrade from Django 1.11 to 2.2
- Upgrade from Django 2.2 to 3.1
- NonXMLContentType exception in donthitsave crawler
- Upgrade from Django 3.1 to 3.2 HOT 1
- Crawler properties does not work HOT 2
- Suggestion for collaboration of data
- Nerf Now!! not updated since October 13th
- Update sample apache vhost in documentation
- "SyntaxError: invalid token" in comics/core/models.py ln. 105 HOT 2
- New source for Baby Blues HOT 1
- OCR on strips? HOT 1
- No output when running crawler
- os.environ.append - not valid method?
- Initial Update
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from comics.