Gallerien, Alben und Bilder aus Picasa einbetten

 

Einbindung von Picasa Bildergalerien im eigenen Web

Bildergalerien in der Cloud sind sehr praktisch. Und für Private geht es um's liebe Geld. Viel können sollen sie und nichts kosten sollen sie. Ich kenne Flickr und Picasa. Flickr ist sehr gut, ein Muss für Foto-Profis. Picasa ist eher etwas für fortgeschrittene Amateure. Beide Bildergalerien sind kostenlos - wenn man nicht zu viel von ihnen verlangt. Und das "zu viel" ist immer der Speicherplatz.

Die wesentliche Unterschied zwischen beiden:
F P + - verschachtelte Ordner
- + Clientanwendung
1TB 5GB Zahlgrenze

Hier geht es um das Einbetten von Bildern in der eigenen Webseite. Dazu muss die Bildergalerie einen RSS-Feed anbieten. Grundsätzlich bieten das beide Galerien an, doch gibt es bei Flickr keine Möglichkeit, ein Album anzugeben. Daher wurde Flickr für diese Anwendung einmal beiseite gelassen.

Picasa

Picasa ist ein kostenloses Bildverwaltungsprogramm für den Desktop. Eine der Eigenschaften von Picasa ist aber die Möglichkeit, diese Bilder auch im Internet zu publizieren. Dazu bietet Picasa zwei Möglichkeiten an:

Publikation von Ordnern im HTML-Format

Dabei entstehen in einem wählbaren Ordner für alle Bilder Miniaturansichten und Vorschaubilder definierbarer Größe in einem wählbaren Design. Diese exportierte Inhalte kopiert man auf den eigenen Webspace und die Bildergalerie ist fertig. Dieses Verfahren ist praktisch, wenn sich die Inhalte der publizierten Bilder nicht verändern. Wenn aber zu einer solchen Sammlung Bilder dazukommen oder wenn maan Bilder bearbeitet, dann muss man diese Arbeitsschritte wiederholen.

Publikation auf PicasaWeb

PicasaWeb ist die Partner-Anwendung von Picasa. PicasaWeb ist in Picasa integriert. Man kann jeden Ordner am Desktop mit einem Klick m Web publizieren und auch den Auftrag geben, zwischen dem Zustand des Ordners am PC und der jeweiligen Webversion Synchronität einzustellen. Wenn man also ein Bild löscht, hinzufügt oder bearbeitet, dann wird die Webversion automatisch korrigiert. Ohne weitere Handarbeit. Das kann sich sehen lassen!

Leider ist die Abbildung der Desktop-Ordner (oder Picasa-Alben) in der Cloud nicht ganz perfekt. In der Cloud sind die Ordner (Alben) immer gleichranging (nebeneinander) angeordnet auch wenn es sich am Desktop um eine Hierarchie gehandelt hat. Es gibt daher keine Verschachtelung von Ordnern. Nach meiner Ansicht handelt es sich dabei um eine bewusste Beschränkung denn wenn einmal mehr als Tausend Ordner angelegt sind, kann es leicht unübersichtlich werden und das Wachstum des Archivs wird auf diese Weise geschickt beschränkt.

Man hat bei PicasaWeb beliebig viel Speicherplatz (vorausgesetzt, die Bilder überschreiten nicht 2048 Pixel) und darum kümmert sich bereits die Desktop-Version von Picasa. Man muss die Bilder nicht verkleinern, das macht alles der Client.

Man hat einen extrem schnellen Zugriff auf die Bilder, man kann die Sichtbarkeit der Bilder auf privat, geschützt oder öffentlich einstellen oder auch nur einer Person allein zugänglich machen. Man kann die Bilder geotaggen, mit Tags versehen uvam.

Leider sind aber Bildergalerie und die eigene Homepage oder das eigenen Blog zwei unterschiedliche Anwendungen und es wäre hübsch, könnte man die Bilder aus der Cloud auch im Rahmen der eigenen Homepage publizieren. Verlinken einzelner Bilder ist ohnehin kein Problem aber wenn man ganze Alben im Web zeigen möchte, noch dazu solche deren Inhalt nicht gleich bleibt, hat das händische Verlinken seine Grenzen.

Und für diese Einbettung ist die RSS-Technologie bestens geeignet. Sie ist bei Google vorbildlich implementiert, bei Yahoo sind die RSS-Feeds nicht so gut programmiert.

Es gibt drei Darstellungformen im Picasa-Web:
1. Das Picasa-Web: gezeigt werden alle verfügbaren Alben mit einem quadratischen Bild als Stellvertreter. Das quadratische Vorschaubild ist anklickbar und zeigt dann die Bilder des Albums.
2. Das Picasa-Album: Gezeigt werden alle Bilder des Albums in wählbarer Vorschaugröße. Die Bilder sind anklickbar und zeigen dann das Bild in größerer Auflösung.
3. Das einzelne Bild. Man kann das Bild noch Zoomen (je nachdem, welche Auflösung man beim Upload eingestellt hat und man kann auch eine Diashow ablaufen lassen.

Sowohl bei der Web-Darstellung als auch beim Album findet man im rechten Kommentarbereich einen RSS-Link. Dieser Link ermöglicht die Einbettung der Vorschaubilder des Webs oder der Bilder eines Albums in fremden Anwendungen.

Bis das aber funktioniert, muss man etwas Entwciklungsarbeit investeren.

Wenn man diesen RSS-Link anklickt, ist man enttäuscht, denn man sieht - so wie das auch der RSS-Reader sehen würde - den Inhalt einer XML-Datei mit Angaben zu dem Web oder zu dem Album. Weiters sieht man in der Adresszeile den Link dazu und diese Links analysieren wir hier einmal:

Als Beispiel verwendet ich meine Rapid-Bilder der Saison 2012/13. Die sind öffentlich, jeder kann sie sehen.

Die Adresse ist
http://picasaweb.google.com/rapidfranz
Gibt man diese Adresse im Browser ein, sieht man einerseits alle Alben und anderseite ändert sich die Adresszeile in:
https://picasaweb.google.com/103374753388611853315

Der Grund ist, dass dieser User "rapidfanz" auch als Google+-User bekannt ist und die Alben aus PicasaWeb in Google+-Alben umgewandelt worden sind. Und in Google+ sind die User nur "Nummern". Es gilt daher:
rapidfranz und 103374753388611853315 können alternativ verwendet werden.

Der Rss-Link für diese "Galerie von Franz Fiala" ist
https://picasaweb.google.com/data/feed/base/user/103374753388611853315?alt=rss&kind=album&hl=de&access=public&imgmax=1600
Abgesehen von anderen Details sieht man durch /user/103374753388611853315, dass das Album eines besteimmten Users angesprochen wird.

Klickt man nur irgendeines der Alben an, zum Beispiel "2013-05-26 Kulovits Abschied, sieht man in der Adresszeile
https://picasaweb.google.com/103374753388611853315 https://picasaweb.google.com/103374753388611853315/20130526KulovitsAbschied?noredirect=1
Die Adresse des RSS-Links ist:
https://picasaweb.google.com/103374753388611853315 https://picasaweb.google.com/data/feed/base/user/103374753388611853315/albumid/5884594875845390017?alt=rss&kind=photo&hl=de
Die Kommandozeile wird um /albumid/588459487584539001 erweitert, das ist offenbar die ID des Albums.

Klickt man nun auf ein Bild, sieht man in der Adresszeile:
https://picasaweb.google.com/103374753388611853315 https://picasaweb.google.com/103374753388611853315/20130526KulovitsAbschied?noredirect=1#5884594908557438002
Die abschließende Zahl #5884594908557438002 ist offenbar die Bildnummer.

Obwohl beim Einzelbild kein RSS-Link angegeben ist, kann man der API-Dokumentation entnehmen, dass auch hier der Kommentar und die Tags zu einem Bild per RSS angeholt werden können.

Abrufen Web Album Bild
UserId + + +
AlbumId + +
PhotoId +

Es ist naheliegend, dass beim einzelnen Bild kein RSS-Link angezeigt wird, denn auf ein einzelnes Bild kann man ohnehin direkt verlinken. Aber in dem RSS-Feed sind auch die Bildbeschreibung, die Tags, der Autor, das Datum und andere Informationen enthalten, die bei einfachen Verlinken verloren gehen.

Die einfachste Anwendung ist das Einbetten der Miniaturbilder eines Albums auf PicasaWeb im eigenen Web. Als Technologie wird ASP-NET verwedent.

Man braucht dazu:
- die UserId
- die AlbumId

Das folgende Beispielprogramm ist mit Absicht so einfach wie möglich gehalten.

Um die Inahlte eines RSS-Feed auf einer Websteie anzeigen zu können, benötigt man ein Style-Sheet, in dem festgehalten wird, welche Felder eines Bildes in welcher Darstellungsart verwendet werden.
Die Zauberformel lautet:
Browserkode = Daten + Darstellungsvorschrift
html = xml + xsl

Das ganze Projekt besteht aus drei Dateien:
picasawebalbum.ascx
picasawebalbum.xsl
picasawebalbum.aspx

picasawebalbum.ascx
Dieses Benutzersteuerelement holt den Feed vom Server und verbindet ihn mit der Darstellungsvorschfit und gibt den Html-Kode aus. Es bekommt dazu zwei Parameter user und album von jener Seiten, die dieses Modul implementiert. Wenn die Parameter nicht angegeben werden, werden die Bilder von User "RapidFranz" und dem Album "2. Rapid-Lauf" angezeigt.

Das Modul, in dem xml-Daten und xsl-Format zusammengefügt werden, heißt asp:xml. Diese Websteuerelement hat zwei Parameter, einen für die Daten und einen für das Format. Während der xsl-Kode tatsächlich als Datei picasawebalbum.xsl vorliegt, kommt die xsl-Datei vom RSS-Feed von picasaweb.google.com. Daher muss in einem ersten Schrtt diese Adresse angesprochen werden und der vom Server kommende Streaam in einen String verwandelt werden, des als Input für das Websteuerelement asp:xsl dient.

Eine einzige Zeile erledigt diesen komplexen Vorgang:
<asp:Xml ID="Xml1" DocumentContent="" runat="server" TransformSource="picasawebalbum.xsl"></asp:Xml>

picasawebalbum.xsl
Aus der RSS-Feed werden die Felder title, link und title verwendet.

picasawebalbum.aspx
Diese Datei wird am Server aufgerufen. Hier werden die Kommandozeilen-Parameter user und album ausgewertet und wenn sie übergeben worden sind, an picasawebalbum.ascx weitergegeben.

picasawebalbum.htm
Jetzt geht es darum, in einer beliebigen HTML-. PHP- oder ASPX-Seite die Bilder anzuzeigen. Wer mit Expression Web arbeitet, kann den Code aus picasawebalbum.aspx in seiner Datei einsetzen. der Vorteil ist, dass die Bilder ein einer div eingefügt werden.

Wenn man dagegen eine andere Technologie verwendet (HTML oder PHP), dann muss man die Seite picasawebalbum.aspx in einem iFrame aufrufen. Beispielhaft wird das in der Datei picasawebalbum.htm gezeigt. Es genügt eine einzige Zeile:
<iframe src="picasawebalbum.aspx" width="300" height="300"></iframe>

Wenn man eine anderes als das voreingestellte Album zeigen möchte, schaut das dann so aus:
<iframe src="picasawebalbum.aspx?album=5884597230337299185" width="300" height="300"></iframe>

Noch eine Schwierigkeit gibt es für PHP-User für den Fall, dass ihr Server kein Microsoft-Server ist, denn dann können sie die Datei picasawebalbum.aspx nicht auf dem eigenen Server ausführen. Auch für diesen Fall ist gesorgt.
Normalerweise müsste man für die Datei picasawebalbum.aspx einen Microsoft-Server benutzen, doch geht es auch ohne. Man muss lediglich den Speicherort der Datei angeben:
<iframe src="http://www.clubcomputer.at/picasawebalbum.aspx" width="300" height="300"></iframe>

Literatur

Sammlung von xsl-Dateien für verschiedenste RSS-Quellen
http://pordl.com/

Sammlung von xsl-Beispielen für PicasaWeb
http://pordl.com/bySite.aspx?site=picasaweb.com

Referenz der Kommandozeilen-Parameter von PicasaWeb
https://developers.google.com/picasa-web/docs/2.0/reference?hl=de#Kind

Anzeige eines RSS-Feed auf der eigenen Seite
http://stackoverflow.com/questions/6304285/how-to-display-rss-feed-of-other-website-to-my-site-in-asp-net

Parse eines RSS-Feed
http://stackoverflow.com/questions/6920024/parse-rss-feed-using-asp-net-c-sharp

Anzeige einzelner Elemente aus einem RSS-Feed
http://www.codeguru.com/csharp/csharp/cs_network/internetweb/article.php/c10985/Displaying-RSS-Items-with-C-and-ASPNET.htm

Consume RSS-Feed with ASP.NET C# (woher kommt XmlHelper?)
http://www.roundedworks.com/notebook/c-asp-net/consume-a-rss-feed-with-asp-net-c/

Modifikation von XML-Inhalten
http://stackoverflow.com/questions/2551307/modify-xml-existing-content-in-c-sharp

Add Node to XML-File
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/e3f3c6b1-43ee-46d7-bc09-edb8dcedb8d1

Reading and Writing XML in C#
http://www.c-sharpcorner.com/UploadFile/mahesh/ReadWriteXMLTutMellli2111282005041517AM/ReadWriteXMLTutMellli21.aspx

Das Ändern und Speichern von XML mit der XmlDocument-Klasse in.NET Framework-SDK
http://support.microsoft.com/kb/301233/de

Edit xml file with C#
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5702a7c7-fdfe-42ed-9329-ec8f3f975979/

How to modify exiting XML file with XmlDocument and XmlNode in C#
http://stackoverflow.com/questions/2558787/how-to-modify-exiting-xml-file-with-xmldocument-and-xmlnode-in-c-sharp

Tip: Make choices at runtime with XSLT parameters
http://www.ibm.com/developerworks/library/x-tipxsltrun/index.html