add a make_thumbs setting to allow not generating thumbnails as they are not

needed for the galleria theme.
+ always generate thumbnail for the representative image
+ bugfixes for the boolean settings
This commit is contained in:
Simon
2012-08-26 00:23:43 +02:00
parent e423397766
commit 900da9d42f
4 changed files with 50 additions and 32 deletions

View File

@@ -28,11 +28,12 @@ Generate html pages for each directory of images
import os
import codecs
import markdown
import PIL
from PIL import Image
from distutils.dir_util import copy_tree
from fnmatch import fnmatch
from jinja2 import Environment, PackageLoader
from sigal.image import Image
DEFAULT_THEME = "default"
INDEX_PAGE = "index.html"
@@ -73,8 +74,10 @@ class Generator():
def directory_list(self):
"get the list of directories with files of particular extensions"
ignored = ['theme', self.settings['thumb_dir'],
self.settings['bigimg_dir']]
ignored = ['theme', self.settings['bigimg_dir']]
if self.settings['thumb_dir']:
ignored.append(self.settings['thumb_dir'])
for dirpath, dirnames, filenames in os.walk(self.path):
dirpath = os.path.normpath(dirpath)
@@ -104,7 +107,7 @@ class Generator():
for f in files:
# find and return the first landscape image
im = Image.open(os.path.join(path, f))
im = PIL.Image.open(os.path.join(path, f))
if im.size[0] > im.size[1]:
return f
@@ -163,12 +166,20 @@ class Generator():
not os.path.isfile(os.path.join(dpath, alb_thumb)):
alb_thumb = self.find_representative(dpath)
thumb_name = os.path.join(self.settings['thumb_dir'],
self.settings['thumb_prefix'] + alb_thumb)
thumb_path = os.path.join(dpath, thumb_name)
if not os.path.exists(thumb_path):
img = Image(os.path.join(dpath, alb_thumb))
img.thumbnail(thumb_path, self.settings['thumb_size'],
fit=self.settings['thumb_fit'],
quality=self.settings['jpg_quality'])
album = {
'path': os.path.join(d, INDEX_PAGE),
'title': self.data[dpath]['title'],
'thumb': os.path.join(d, self.settings['thumb_dir'],
self.settings['thumb_prefix'] +
alb_thumb),
'thumb': os.path.join(d, thumb_name)
}
self.ctx['albums'].append(album)

View File

@@ -129,34 +129,28 @@ class Gallery:
copy2(descfile, img_dir)
if len(imglist) != 0:
thumb_dir = os.path.join(img_dir, self.settings['thumb_dir'])
if not os.path.isdir(thumb_dir):
os.mkdir(thumb_dir)
self.process_dir(imglist, img_dir)
bigimg_dir = ''
if self.settings['big_img']:
bigimg_dir = os.path.join(img_dir,
self.settings['bigimg_dir'])
if not os.path.isdir(bigimg_dir):
os.mkdir(bigimg_dir)
self.process_dir(imglist, img_dir, thumb_dir,
bigimg_dir=bigimg_dir)
def process_dir(self, imglist, img_dir, thumb_dir, bigimg_dir=''):
def process_dir(self, imglist, img_dir):
"prepare images for a directory"
thumb_dir = os.path.join(img_dir, self.settings['thumb_dir'])
if not os.path.isdir(thumb_dir):
os.mkdir(thumb_dir)
if self.settings['big_img']:
bigimg_dir = os.path.join(img_dir,
self.settings['bigimg_dir'])
if not os.path.isdir(bigimg_dir):
os.mkdir(bigimg_dir)
# loop on images
for f in imglist:
filename = os.path.split(f)[1]
im_name = os.path.join(img_dir, filename)
thumb_name = os.path.join(thumb_dir,
self.settings['thumb_prefix'] + filename)
if os.path.isfile(im_name) and os.path.isfile(thumb_name) and \
not self.force:
if os.path.isfile(im_name) and not self.force:
print "%s exists - skipping" % filename
continue
@@ -174,9 +168,12 @@ class Gallery:
img.save(im_name, quality=self.settings['jpg_quality'])
img.thumbnail(thumb_name, self.settings['thumb_size'],
fit=self.settings['thumb_fit'],
quality=self.settings['jpg_quality'])
if self.settings['make_thumbs']:
thumb_name = os.path.join(thumb_dir,
self.settings['thumb_prefix'] + filename)
img.thumbnail(thumb_name, self.settings['thumb_size'],
fit=self.settings['thumb_fit'],
quality=self.settings['jpg_quality'])
if self.settings['exif']:
copy_exif(f, im_name)

View File

@@ -26,9 +26,10 @@ import ConfigParser
_DEFAULT_CONFIG = {
'img_size': '640x480',
'thumb_prefix': '',
'make_thumbs': 1,
'thumb_prefix': 'TN-',
'thumb_size': '150x112',
'thumb_dir': 'thumbnail',
'thumb_dir': '',
'thumb_fit': 1,
'big_img': 0,
'bigimg_dir': 'big',
@@ -59,11 +60,16 @@ def read_settings(filename=None):
config.read(filename)
settings = dict(config.items('sigal'))
settings['jpg_quality'] = int(settings['jpg_quality'])
settings['fileextlist'] = settings['fileextlist'].split(',')
settings['img_size'] = get_size(settings['img_size'])
settings['thumb_size'] = get_size(settings['thumb_size'])
settings['jpg_quality'] = config.getint('sigal', 'jpg_quality')
settings['big_img'] = config.getboolean('sigal', 'big_img')
settings['exif'] = config.getboolean('sigal', 'exif')
settings['make_thumbs'] = config.getboolean('sigal', 'make_thumbs')
settings['thumb_fit'] = config.getboolean('sigal', 'thumb_fit')
if settings['exif']:
try:
import pyexiv2

View File

@@ -4,6 +4,10 @@
theme = default
# size of resized image
img_size = 640x480
# generate thumbnails
make_thumbs = 0
# directory of the thumbnails
thumb_dir = thumbnail
# prefix for thumbnails name
thumb_prefix = TN-
# thumbnail size