In /blog/2013/08/04/gallery habe ich beschrieben, wie ich meine Fotogallerie
in Octopress einbinde. Leider zeigt sich, dass der dort verwendete Ansatz
den ganzen Generierungsprozess ziemlich stark ausbremst.
Ziel dieses Artikels ist die Beschleunigung des Generierungsprozesses.
Problembeschreibung
Das Plugin Octopress-Gallery
zur Anzeige der Fotogallerie konvertiert die Bilder automatisch in’s
Thumbnail-Format. Es ist zwar ein Algorithmus eingebaut, der die Konvertierung
der Bilder nur dann durchführen soll, wenn sich die Bilder geändert haben –
er funktioniert aber leider nicht.
Lösungsansatz
Ich erzeuge ein Skript, welches die Konvertierung vornimmt
Das Skript selbst hat auch eine “Änderungserkennung”, d.h. es werden
wirklich nur die gänderten Bilder neu konvertiert
Das Skript muß manuell ausgeführt werden
Die konvertierten Bilder liegen im Verzeichnis “source” und werden
mit in Git gespeichert.
Als Konsequenz dieser Änderungen müssen noch:
Die Konvertierung von Octopress-Gallery muß abgeklemmt werden
Skalierte Bilder einbinden in die Gallerie
Umsetzung
Konvertierungsskript
Das Konvertierungsskript befindet sich auf GitHub
Abklemmen der alten Konvertierung
Die alte Konvertierung wird abgeklemmt, in dem
das MiniMagick-Plugin gelöscht wird
die MiniMagick-Konfiguration entfernt wird
MiniMagick-Plugin löschen
MiniMagick-Plugin entfernen
1
rm -f plugins/mini_magick.rb
MiniMagick-Konfiguration entfernen
MiniMagick-Konfiguration entfernen
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
28
diff --git a/_config.yml b/_config.yml
index 33ac290..7371444 100644
--- a/_config.yml
+++ b/_config.yml
@@ -100,23 +100,3 @@ google_analytics_tracking_id:
# Facebook Like
facebook_like: false
-
-mini_magick:
- test_thumbnail:
- source: images/galleries/test
- destination: images/galleries/test/thumbs
- commands:
- - thumbnail: "64x48^"
- - crop: "64x48-0x0"
- centos_thumbnail:
- source: images/galleries/centos
- destination: images/galleries/centos/thumbs
- commands:
- - thumbnail: "64x48^"
- - crop: "64x48-0x0"
- centos59_thumbnail:
- source: images/galleries/centos59
- destination: images/galleries/centos59/thumbs
- commands:
- - thumbnail: "64x48^"
- - crop: "64x48-0x0"
Skalierte Bilder einbinden
Hierzu muß die Datei plugins/gallery_tag.rb angepasst werden.
Wir ändern dies so, dass
für die Thumbnails die kleinen Bilder unterhalb von …/thumbs verwendet werden
für die Standard-Anzeige die mittleren Bilder unterhalb von …/scaled verwendet werden
für die Großanzeige die originalen Bilder verwendet werden
Änderungen an ./plugins/gallery_tag.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/plugins/gallery_tag.rb b/plugins/gallery_tag.rb
index 2e09f9b..8be9ff4 100644
--- a/plugins/gallery_tag.rb
+++ b/plugins/gallery_tag.rb
@@ -7,13 +7,13 @@ module ImageList
list << %Q{<script src="/javascripts/fotorama/jquery-1.10.2.min.js"></script>}
list << %Q{<link href="/javascripts/fotorama/fotorama.css" rel="stylesheet">}
list << %Q{<script src="/javascripts/fotorama/fotorama.js"></script>}
- list << %Q{<div class="fotorama" data-autoplay="3000" data-transition="dissolve" data-nav="thumbs" data-allow-full-screen="true" data-keyboard="true" data-width="80%" data-thumb-with="64" data-thumb-height="48">} # data-width="100%" data-thumb-width= data-thumb-height=
+ list << %Q{<div class="fotorama" data-autoplay="3000" data-transition="dissolve" data-nav="thumbs" data-allow-full-screen="true" data-keyboard="true" data-width="640" data-height="480" data-thumb-with="64" data-thumb-height="48">} # data-width="100%" data-thumb-width= data-thumb-height=
dir = Dir.new( File.join(BASE_DIR, name) )
dir.sort.each do | d |
image = File.basename(d, File.extname(d))
unless d =~ /^\./ || d =~ /thumbs/ || d =~ /scaled/ || d =~ /_md5/
# list << %Q{<a href="/images/galleries/#{name}/#{d}" rel="shadowbox" title="#{image}"><img src="/images/galleries/#{name}/thumbs/#{d}" /></a>}
- list << %Q{<a href="/images/galleries/#{name}/scaled/#{d}"><img src="/images/galleries/#{name}/thumbs/#{d}"/></a>}
+ list << %Q{<a href="/images/galleries/#{name}/scaled/#{d}" data-full="/images/galleries/#{name}/#{d}" data-fit="scaledown"><img src="/images/galleries/#{name}/thumbs/#{d}" data-fit="scaledown"/></a>}
end
end
list << %Q{</div> <!--class="fotorama" data-nav="thumbs" -->}