lunes, 20 de octubre de 2008

Fix low contrast photos using python (PIL)

In this post i explain how to fix low contrast images using the equalization functions of the python image library PIL.

Suppose that you have a low contrast image like this one:


Now lets equalize it using python:

import Image,import ImageOps

im = Image.open('lowContrast.jpg')
im_eq = ImageOps.equalize(im)
im_eq.save('lowContrast_eq.jpg')


And the result is:


Now suppose that you have the same problem but only in one of the channels. Like in this one that has low contrast in the blue band.


No problem:

import Image,import ImageOps

im = Image.open('colorProblem.jpg')
r,g,b = im.split()
b = ImageOps.equalize(b)
im_e = Image.merge('RGB', (r,g,b))
im_e.save('colorProblem_beq.jpg')


The result:

domingo, 19 de octubre de 2008

force download django

When you serve a document,image,file from a Web server, you might want to immediately prompt the user to save the file directly to the user's disk, without opening it in the browser.

You can use the content-disposition header to override the default behavior.

The code below shows how-to do this in python/django:

import mimetypes, os

def download_view(request, filename):
    file = open(filename,"r")
    mimetype = mimetypes.guess_type(filename)[0]
    if not mimetype: mimetype = "application/octet-stream"

    response = HttpResponse(file.read(), mimetype=mimetype)
    response["Content-Disposition"]= "attachment; filename=%s" % os.path.split(filename)[1]
    return response