- April 3, 2007
- pdf png custom-response subprocess
- 0 (after 0 ratings)
This is an example of how I am providing downloads of dynamic images in either PNG or PDF formats. The PDF format requires ImageMagick's
convert, and temporary disk space to save the intermediary image. If anyone knows a way to avoid writing to disk, I'd be happy to include it here.
I realize there may be uses where it isn't necessary to use the PIL Image class if the image is already stored as a file. This is used for downloading dynamic images without saving them to disk (unless pdf format is used).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
# This is not a full working example, just a starting point # for downloading images in different formats. import subprocess import Image def image_as_png_pdf(request): output_format = request.GET.get('format') im = Image.open(path_to_image) # any Image object should work if output_format == 'png': response = HttpResponse(mimetype='image/png') response['Content-Disposition'] = 'attachment; filename=%s.png' % filename im.save(response, 'png') # will call response.write() else: # Temporary disk space, server process needs write access tmp_path = '/tmp/' # Full path to ImageMagick convert binary convert_bin = '/usr/bin/convert' im.save(tmp_path+filename+'.png', 'png') response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=%s.pdf' % filename ret = subprocess.Popen([ convert_bin, "%s%s.png"%(tmp_path,filename), "pdf:-" ], stdout=subprocess.PIPE) response.write(ret.stdout.read()) return response
More like this
- Convert LaTeX templates to various output formats by blizz 8 years ago
- dynamic model graph by findlay 6 years, 10 months ago
- A form field for valdating PDF and Microsoft Word document by jimmylam 6 years, 4 months ago
- Download an image using requests, resize it using PIL, and save it to a model ImageField. by stewx 2 days, 7 hours ago
- Sorl Thumbnail + Amazon S3 by skoczen 5 years, 9 months ago