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:
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user