12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # -*- coding: utf-8 -*-
- """
- Optimized images (jpg and png)
- Assumes that jpegtran and optipng are isntalled on path.
- http://jpegclub.org/jpegtran/
- http://optipng.sourceforge.net/
- Copyright (c) 2012 Irfan Ahmad (http://i.com.pk)
- """
- import logging
- import os
- from subprocess import call
- from pelican import signals
- logger = logging.getLogger(__name__)
- # A list of file types with their respective commands
- COMMANDS = [
- ('.jpg', 'jpegtran -copy none -optimize -outfile "{filename}" "{filename}"'),
- ('.png', 'optipng "{filename}"'),
- ]
- def optimize_images(pelican):
- """
- Optimized jpg and png images
- :param pelican: The Pelican instance
- """
- for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
- for name in filenames:
- optimize(dirpath, name)
- def optimize(dirpath, filename):
- """
- Check if the name is a type of file that should be optimized.
- And optimizes it if required.
- :param dirpath: Path of the file to be optimzed
- :param name: A file name to be optimized
- """
- for extension, command in COMMANDS:
- if filename.endswith(extension):
- filepath = os.path.join(dirpath, filename)
- command = command.format(filename=filepath)
- call(command, shell=True)
- def register():
- signals.finalized.connect(optimize_images)
|