Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Erik

Pages: [1]
1
Hallo,

habe das Problem, daß die Startseite (index.php) sehr langsam lad. Habe bereits Cache Funktionen eingeschaltet, aber das löst das Problem nur für den 2+ User.

Habe etwas in der Datei index.php auskommentiert und festgestellt, daß es sich um ein lastproblem auf der Datenbank handelt, die durch die Suche nach den neusten Bildern hervorgerufen wird.
Kommentiere ich die Abfrage aus, oder ersetze diese durch einen anderen SQL-Statement, der mir eine andere Auswahl an Bildern liefert, ist die Seite in wenigen Senkunden geladen, nur die original Abfrage dauert ca. 10 Sekunden, was natürlich beim ersten Aufruf doch sehr langsam ist.

Andere Bereiche auf der Startseite habe ich schon test weise auskommentiert, nur bringt mir das nicht den Gewünschten erfolg.

Hat einer eine Idee, wie die Funktion optimiert werden kann?

Grüße

Erik

2
Hallo,

dieser MOD bezieht sich auch auf diesen Threat:

http://www.4homepages.de/forum/index.php?topic=16533.0

Vielen Dank an HOST für die klasse Idee.

Habe diesen neuen hier eröffnet, so daß ich alle erweiterten Änderungen am Anfang zusammen fassen kann.

Folgende Features sind integriert:

- Datenbankerweiterung für GPS Daten für den direkten und indirekten Upload (Für Gäste und Admin)
- Suchmaske für Koordinaten im Admin Bereich
- Automatische EXIF Übernahme der GPS Koordinaten, falls diese integriert sind und Spreicherung in der DB
- Automatische EXIF Übernahme bei Admin Freischaltung von Bildern
- Anzeige eines Hinweises unter jedem Thumbnail, fals GPS Daten vorhanden sind.
- Google Map Karte all Bilder einer jeweiligen Kategorie, Suche oder Lightbox.

So, nun geht es los. Die Änderung der Files bezieht sich auf die aktuelle Version 1.7.4.


Schritt 1:

Bitte alle Änderungen, außer Schritt 3 vom Original Threat

http://www.4homepages.de/forum/index.php?topic=16533.0

durchführen.

Schritt 2:

Die Datenbank 4images_images_temp bitte um folgende Tabellen erweitern:

Add the following fields to the database table 4images_images_temp
   image_gmap_longitude   varchar(20)
   image_gmap_latitude   varchar(20)
   image_gmap_zoom   char(2)
   image_gmap_type   tinyint(1)
   image_gmap_show   tinyint(1)
   
Schritt 3:

Bitte die Zeilen in /lang/<your_language>/main.php am Ende, vor "?>" Einfügen.

Code: [Select]
// >>>>>>>>>>>>>>>>>> [MOD] Google-Map >>>>>>>>>>>>>>>>>>
//-----------------------------------------------------
//--- Google-Map---------------------------------------
//-----------------------------------------------------
$lang['image_gmap_longitude'] = "Längengrad (-180...+180)";
$lang['image_gmap_latitude'] = "Breitengrad (-90...+90)&nbsp;&nbsp;
<a href='koordinatencheck.html'
target='detail'
onclick=\"javascript:window.open('','detail','width=600, height=600, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')\">
Koordinatensuche
</a>
";
$lang['image_gmap_zoom'] = "Google Map Zoom-level (1-20) (out-in)";
$lang['image_gmap_type'] = "Art der Google Map <br /><span class=\"smalltext\">1: Map<br />2:Satellite<br />3:Hybrid</span>";
$lang['image_gmap_show'] = "Google Map Anzeigen?";
$lang['image_gmap_text1'] = "Das Bild";
$lang['image_gmap_text2'] = "wurde hier aufgenommen.";
// <<<<<<<<<<<<<<<<<< [MOD] Google-Map <<<<<<<<<<<<<<<<<<

Schritt 4:

Bitte die Datei koordinatencheck.html aus der angehangenen ZIP-Datei auspacken und in das Verzeichnis admin speichern. (Dies ist eine erweiterte Version der hier bereits veröffentlichten.).
Öffnet diese bitte und tragt bei key=abc Euren Google Map Key ein.


Schritt 5:

Bitte öffnet Eure UPLOAD.PHP aus dem include Verzeichnis und sucht den Bereich

Code: [Select]
 function set_error($error_msg) {
    $this->upload_errors[$this->file_name][] = $error_msg;
  }
 

hiernach fügt Ihr bitte den Block ein:

Code: [Select]
// EXIF Funktionen für das automatische einfügen der GPS Daten beim Upload - Groesstenteils aus der Functions.php übernommen.
  function get_exif_info($exif) {
  $exif_match = array();
  $exif_match['Make'] = "make";
  $exif_match['Model'] = "model";
  $exif_match['DateTimeOriginal'] = "datetime";
  $exif_match['ISOSpeedRatings'] = "isospeed";
  $exif_match['ExposureTime'] = "exposure";
  $exif_match['FNumber'] = "aperture";
  $exif_match['FocalLength'] = "focallen";
// GPS EXIF Variablen Start  - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
  $exif_match['GPSLatitude'] = "GPSLatitude";
  $exif_match['GPSLatitudeRef'] = "GPSLatitudeRef";
  $exif_match['GPSLongitude'] = "GPSLongitude";
  $exif_match['GPSLongitudeRef'] = "GPSLongitudeRef";
  $exif_match['GPSAltitude'] = "GPSAltitude";
// GPS EXIF Variablen Ende

  $exif_array = array();
  if (is_array($exif)) {
    foreach ($exif as $key => $val) {
      if (isset($exif_match[$key])) {
        $exif_info = $val;
        if ($key == "DateTimeOriginal") {
          $exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);
        }
        elseif ($key == "ExposureTime") {
 $exposure = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
        }
        elseif ($key == "FNumber") {
 $aperture = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "F/" . ($aperture[0] / $aperture[1]);
        }
        elseif ($key == "FocalLength") {
 $focalLen = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($focalLen[0] / $focalLen[1]) . "mm";
        }

// GPS EXIF START - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
        elseif ($key == "GPSLatitudeRef") {
  if ($exif_info == "N") {
  $GPSLatitudeRef = "Nord";
  $GPSLatfaktor = 1;
  } else {
  $GPSLatitudeRef = "Süd";
  $GPSLatfaktor = -1;
  }
 
        }
        elseif ($key == "GPSLongitudeRef") {
  if ($exif_info == "E") {
  $GPSLongitudeRef = "Ost";
  $GPSLongfaktor = 1;
  } else {
  $GPSLongitudeRef = "West";
  $GPSLongfaktor = -1;
  }
}
        elseif ($key == "GPSLatitude") {
         $GPSLatitude_h = explode("/", $exif_info[0]);
         $GPSLatitude_m = explode("/", $exif_info[1]);
         $GPSLatitude_s = explode("/", $exif_info[2]);
        
         $GPSLat_h = $GPSLatitude_h[0] / $GPSLatitude_h[1];
         $GPSLat_m = $GPSLatitude_m[0] / $GPSLatitude_m[1];
         $GPSLat_s = $GPSLatitude_s[0] / $GPSLatitude_s[1];
        
         $GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
        
         $exif_array[$exif_match[$key]] =  $GPSLatitudeRef . " " .$GPSLat_h . "° ". $GPSLat_m . "' " . $GPSLat_s . "'' ($GPSLatGrad)";
        }
        elseif ($key == "GPSLongitude") {
         $GPSLongitude_h = explode("/", $exif_info[0]);
         $GPSLongitude_m = explode("/", $exif_info[1]);
         $GPSLongitude_s = explode("/", $exif_info[2]);
        
         $GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
         $GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
         $GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
        
         $GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
        
         $exif_array[$exif_match[$key]] =  $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
        }
        elseif ($key == "GPSAltitude") {
    $GPSAltitude = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($GPSAltitude[0] / $GPSAltitude[1]) . " Meter über NN";
        }  
// GPS EXIF ENDE

Bitte öffnet die Datei member.php und überschreibt (ersetzen) den Block

Code: [Select]
     $current_time = time();
      if ($direct_upload) {
        $sql = "INSERT INTO ".IMAGES_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments".$additional_field_sql.")
                VALUES
                ($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, $image_active, '$new_name', '$new_thumb_name', '$image_download_url', $image_allow_comments".$additional_value_sql.")";
        $result = $site_db->query($sql);
        $image_id = $site_db->get_insert_id();
        if ($result) {
          include(ROOT_PATH.'includes/search_utils.php');
          $search_words = array();
          foreach ($search_match_fields as $image_column => $match_column) {
            if (isset($HTTP_POST_VARS[$image_column])) {
              $search_words[$image_column] = stripslashes($HTTP_POST_VARS[$image_column]);
            }
          }
          add_searchwords($image_id, $search_words);
        }
      }
      else {
        $sql = "INSERT INTO ".IMAGES_TEMP_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_media_file, image_thumb_file, image_download_url".$additional_field_sql.")
                VALUES
                ($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, '$new_name', '$new_thumb_name', '$image_download_url'".$additional_value_sql.")";
        $result = $site_db->query($sql);
      }
      
     
bitte mit

Code: [Select]
// Add On for GPS EXIF auslesen
       if (function_exists('exif_read_data') && $exif_data = @exif_read_data($src, 'EXIF')) {
          $exif_array = get_exif_info($exif_data);
          foreach ($exif_array as $key => $val) {
           if (($key != "GPSLongitudeRef") &&  ($key != "GPSLatitudeRef")) {
           if ($key == "GPSLongitude") {
           $GPSLongtude = substr (strrchr($val, "("), 1);
           $GPSLongtude = substr ($GPSLongtude,0, strlen($GPSLongtude)-1);
           }
           if ($key == "GPSLatitude") {
           $GPSLatitude = substr (strrchr($val, "("), 1);
           $GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);
           }

                  }
          }

        if (($GPSLongtude <> "") && ($GPSLatitude <>"")) {
       $image_gmap_zoom = 13;
       $image_gmap_type = 3;
       $image_gmap_show = 1;
     }
      

        }
        

        
      // Add On for GPS EXIF auslesen ENDE


      $current_time = time();
      if ($direct_upload) {
        $sql = "INSERT INTO ".IMAGES_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments, image_gmap_longitude, image_gmap_latitude , image_gmap_zoom, image_gmap_type, image_gmap_show ".$additional_field_sql.")
                VALUES
                ($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, $image_active, '$new_name', '$new_thumb_name', '$image_download_url', $image_allow_comments, '$GPSLongtude', '$GPSLatitude', '$image_gmap_zoom', '$image_gmap_type', '$image_gmap_show'".$additional_value_sql.")";
        $result = $site_db->query($sql);
        $image_id = $site_db->get_insert_id();
        if ($result) {
          include(ROOT_PATH.'includes/search_utils.php');
          $search_words = array();
          foreach ($search_match_fields as $image_column => $match_column) {
            if (isset($HTTP_POST_VARS[$image_column])) {
              $search_words[$image_column] = stripslashes($HTTP_POST_VARS[$image_column]);
            }
          }
          add_searchwords($image_id, $search_words);
        }
      }
      else {
        $sql = "INSERT INTO ".IMAGES_TEMP_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_media_file, image_thumb_file, image_download_url, image_gmap_longitude, image_gmap_latitude , image_gmap_zoom, image_gmap_type, image_gmap_show ".$additional_field_sql.")
                VALUES
                ($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, '$new_name', '$new_thumb_name', '$image_download_url', '$GPSLongtude', '$GPSLatitude', '$image_gmap_zoom', '$image_gmap_type', '$image_gmap_show'".$additional_value_sql.")";
        $result = $site_db->query($sql);
      }
     

ersetzen.

Anschließend können User Bilder mit GPS Exif Daten uploaden, die automatisch in die Datenbank (temp oder normal) gespeichert werden.

Schritt 6:

Bitte überschreibt Eure checkimages.php im Admin Verzeichnis mit der Angahangenen Version. Sie beinhaltet die Funktion CheckImages aus dem Adminverzeichnis und wurde hier im Forum bereits erweitert. Dieser erweiterten Version habe ich die GPS Funktionalität spendiert, so daß eventuelle GPS EXIF Werte direkt übernommen werden.
Es wird die modifizierte upload.php benötigt, die über include eingebunden wird.

Schritt 7:

Wenn Ihr unter Euren Thumbnails eine Info einblenden wollte, das es zu diesem Bild GPS Daten gibt, muß folgendes getan werden (optional):

Fügt in Eurer thumbnail_bit.html im \template\<Dein Template> Verzeichnis folgendes ein:

Code: [Select]
{if gmap}GPS Position{endif gmap}

Nun müssen die Dateien search.php, categories.php, index.php und lightbox.php modifiziert werden.

Bitte in jeder Datei die Zeile

Code: [Select]
show_image($image_row);

suchen und VOR der Zeile

folgenden Block einfügen:

Code: [Select]
// >>>>>>>>>>>>>>>>>> [MOD] Google-Map >>>>>>>>>>>>>>>>>>

$image_gmap_show = $image_row['image_gmap_show'];

if ($image_gmap_show == 1) {

  

  $gmap = 1;

  
  $site_template->register_vars(array(
    "gmap"   => $gmap,
    ));

} else {
  $gmap = 0;
  $site_template->register_vars(array(
      "gmap"   => $gmap,
    ));
}

unset($gmap_java);

// <<<<<<<<<<<<<<<<<< [MOD] Google-Map <<<<<<<<<<<<<<<<<<


----Ergänzung / Nachtrag---------------------

Hallo,

habe nun auch die Übersicht Programmiert, die auf einer Kategorie, Lightbox oder aus der Suche einen Button einblendet, der eine Google Map mit Markern aufruft. natürlich nur, wenn auch entsprechende Koordinaten in den entsprechenden Bildern eingefügt sind.
Der Hauptblock ist in der Datei map_overview.php vermerkt, die ein Template map_overview.html in Eurem Template Verzeichnis benötigt, dazu zwei Buttons.

Ich habe Euch alle meine Google Maps und GPS Funktionen meiner Gallery zusammen gepackt und als Zip Angehangen, wundert Euch nicht, das vielleicht noch Teile einer FLASH Gallery und der Histogramm Funktion enthalten sind.

Variable                        Template
{mapshow_button}             Categories, lightbox, search
{if gmap}{endif gmap}      thumbnail_bit.html

Bitte kopiert in der Datei map_overview.php auch Euren Google Map Api Key hinein, sucht nach YOUR_KEY_HERE.

Bitte die Struktur in der Zip-Datei beachten.

Die Änderungen sind in allen Dateien entsprechend markiert, sucht nach erik oder GPS oder Google.

Alle Dateiversionen sind 1.7.4

Viel Spaß und Grüße

Erik

PS: Hatte keine Zeit, jede Änderung einzeln hier zu dokumentieren. Daher die Files für Euch als Zip. Für den ein oder anderen so auch leichter. ;-)
-------------------------


So, hoffe, ich habe nichts vergessen.
Bitte macht vor Änderungen bitte ein Backup der DB und der Files, so daß Ihr bei Problemen auch wieder zurück könnt.

Änderungen ohne Gewähr.

Viel Spaß

Grüße

Erik

29.1.2008 - Fehler in Checkimages gefunden. Wurde ein Bild mit GPS EXIF Infos importiert und im gleichen Zuge ein Bild ohne GPS EXIF Daten, so wurden die Daten des ersten Bildes auch für das zweite und weitere Bilder genutzt. Die angehangene checkimages.zip ist die gefixte Version.

23.3.2008 - Das Zip-File 4images_Google_Map_1_7_6.zip beinhaltet alle meine geänderten PHP-Files mit Scriptversion 1.7.6. Bitte vor Integration ein Backup machen.
Neu User müssen zusätzlich auch Ihre Templates und Ihre Datenbank anpassen. Würde mich über ein Feedback freuen, ob das Update funktioniert hat.

10.4.2008 - Habe die Datei Koordinatencheck.html etwas modifiziert und erweitert. Nun werden die Koordinaten in Ortsnamen mit umgewandelt und automatisch mit als Schlüsselwort mit eingefügt. Auch ist das Handling nun etwas verfeinert. leider funktioniert die Datei nur im Firefox. Wäre klasse, wenn jemand diese auch im IE ans laufen bekommt.

17.6.2008 - Um Verwirrungen wegen der verschiedenen Versionen in den Zipfiles vorzubeugen und es allen einfacher zu machen, habe ich alles in ein File zusammengefügt und neu angehangen. Die Files sind für Version 1.7.6.

15.5.2009 - aktualisierte Files der Version 1.7.7 im Zip File. Die Files sind von meiner Installation, habe noch Histogramm - und Piclense Mod installiert. Entsprechende Modifikationen sind in den Files ebenfalls vorhanden. Falls Ihr bisher noch keine GPS integriert habt, denkt bitte an die Datenbankmodifikation, die Templates (im File enthalten) zu editieren und Euren eigenen Google Map API Key zu erstellen.

16.5.2009 - es war leichter als gedacht - nun können auch User die GPS Daten Ihrer eigenen Bilder bearbeiten. Habt Ihr die bisherigen Änderungen durchgeführt, müßt Ihr folgende Änderungen durchführen, so daß auch User GPS Daten ändern können.
1) Löscht die Datei koordinatencheck.html und zugehöriges Script Verzeichnis aus Eurem Admin Verzeichnis. Kopiert beide Dateien aus dem Zip Paket und legt sie ins Root Eurer Gallery
2) Ändert in Eurer Language/main.php die Zeile "<a href='koordinatencheck.html'" in "<a href='$script_url/../koordinatencheck.html'".
3) Kopiert die Datei member_editimage.html in Euer Template Verzeichnis.

17.5.2009 - User können beim Upload nun auch direkt die GPS Daten mit angeben. Dazu ist natürlich die koordinatencheck.html in's Gallery Root zu kopieren (siehe 16.5.2009). Sofern im Bild EXIF GPS Daten enthalten sind, haben diese Vorrang zu den manuell eingegebenen.

15.7.2009 - Bug in der member.php: GPS Daten wurden nicht übernommen, wenn im Bild keine EXIF Daten waren. Teilweise auch keine Koordinaten gespeichert. Zudem werden nun auch die GPS Werte auf Plausibilität geprüft. Sind diese ungültig oder fehlen, wird automatisch der Wert zum anzeigen der Karte in der DB auf AUS (0) gesetzt.

3
Hallo,

zeichne verschiedene Strecken mit einem GPS Gerät auf und speichere diese zur weiteren Verarbeitung als GPX File. Viele Programme können die GPX Files lesen, warum nicht auch die Gallery?
Praktisch wäre es nun, wenn die Gallery diese Dateien direkt in Google Maps darstellen könnte...
Hier die Erweiterung, so daß die Gallery auch GPX Files direkt verarbeiten kann.

Habe etwas im Netz gesucht habe und ein Java Script gefunden habe, das eine Dynamische Umwandlung für Google Maps durchführt.
Das Script kann unter http://www.j-berkemeier.de/Touren/GPXViewer.html herunter geladen werden. Für private Nutzung ist das Script frei. Ansonsten bitte Rücksprache mit Jürgen Berkemeier halten.

Aus dem Zip Paket bitte das Unterverzeichnis "GM_Utils" mit Inhalt in templates\<Dein Template>\ kopieren (Verzeichnis sollte auch angelegt sein)!!!.

anschließend bitte die Datei includes\upload_definitions.php um folgende Zeile ergänzen.

Code: [Select]
$mime_type_match['gpx'] = array("application/octet-stream");
oder besser auch ... ( von mawenzi )
Code: [Select]
$mime_type_match['gpx'] = array("application/octet-stream", "text/xml");

Die Datei templates\4dark\media\gpx.html anlegen. Bitte den Pfad zur Java-Script Datei noch entsprechend anpassen und in diese Datei seinen privaten Google Map Key anlegen. Bitte die "" nicht löschen!!!

Code: [Select]
<!-- 4homepage Template file for GPX Files (GPS Exchange Format)
Written 2007 by Erik Groennerud - www.koelschwasser.de www.koelschwetter.de

Java Script Teil von Jürgen Berkemeier
http://www.j-berkemeier.de/Touren/GPXViewer.html -->

<script type="text/javascript">
  var key="ABQIAAAAIrdysHzv88J1s03................xATHmmKby6sZwOBxTB3_Cz387wAuEe4yVOrTBoTD5vHA";
</script>
<script type="text/javascript" src="{template_url}/GPX_Utils/GPX2GM.js"></script>

<div id="map1" class="gpxview:{media_src}:Hybrid" style="width:100%;height:600px">
 <noscript>Zum Anzeigen der Karte wird Javascript benötigt.</noscript>
</div>
<br>
<table bgcolor="#FFFFFF"><br><td>
<div id="map1_hp" style="width:600px;height:300px">
 <noscript>Zum Anzeigen des Höhenprofils wird Javascript benötigt.</noscript>
</div>
</td></tr></table>
<br>
<br>
<button type="button" class="gpxview:map2:skaliere">Karte auf Track skalieren</button></p>

GPX-File (GPS Exchange Format)
<br>

Bitte das aufgehangene GPX-Icon (gpx.gif) in das Verzeichnis templates\<Dein Template>\icons kopieren.

Zuletzt bitte noch das Format GPX als erlaubte Endung im Adminbereich unter Einstellungen ergänzen.

Viel Spaß.

Erik

PS: Vergesst bitte nicht, Euren privaten Google Maps Key noch einzufügen

- Update 12.3.2009 -
Der Code wurde um die Funktion des Höhenprofils erweitert. Bitte an Euren eigenen Google Api Key denken. Getestet mit der Version 3.3.1 von Jürgen's JavaScript GPX Tool. Getestet auch mit meiner weiteren GPS und Google Maps Erweiterung.

4
Hallo zusammen,

nachdem ich hier im Forum keine einfache Lösung gefunden habe, die GPS Exif Informationen der Bilder mittels Google Maps darzustellen, habe ich mal schnell einen Hack integriert, der die Daten aus den Bilder ausliest und als kleine Google Map darstellt.

Ein Screenshot, wie das ganze aussieht, im Anhang.

Habe dazu die integrierte EXIF Funktion von 4Images 1.7.4 erweitert. Alle Änderungen sind in der Datei functions.php eingebunden, Exif Flags Namen sind in der Sparchdatei main.php im Verzeichnis "lang\deutsch" eingefügt (Abschnitt "EXIF Tags")

Code: [Select]
$lang['exif_GPSLatitudeRef'] = "GPS Breitengrad Referenz:";
$lang['exif_GPSLatitude'] = "GPS Breitengrad";
$lang['exif_GPSLongitudeRef'] = "GPS Längengrad Referenz";
$lang['exif_GPSLongitude'] = "GPS Längengrad:";
$lang['exif_GPSAltitude'] = "GPS Höhe:";


Hier meine Ergänzungen und die EXIF Funktion der functions.php (aus dem Include Verzeichnis):

Code: [Select]
function get_exif_info($exif) {
  $exif_match = array();
  $exif_match['Make'] = "make";
  $exif_match['Model'] = "model";
  $exif_match['DateTimeOriginal'] = "datetime";
  $exif_match['ISOSpeedRatings'] = "isospeed";
  $exif_match['ExposureTime'] = "exposure";
  $exif_match['FNumber'] = "aperture";
  $exif_match['FocalLength'] = "focallen";
// GPS EXIF Variablen Start  - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
  $exif_match['GPSLatitude'] = "GPSLatitude";
  $exif_match['GPSLatitudeRef'] = "GPSLatitudeRef";
  $exif_match['GPSLongitude'] = "GPSLongitude";
  $exif_match['GPSLongitudeRef'] = "GPSLongitudeRef";
  $exif_match['GPSAltitude'] = "GPSAltitude";
// GPS EXIF Variablen Ende

  $exif_array = array();
  if (is_array($exif)) {
    foreach ($exif as $key => $val) {
      if (isset($exif_match[$key])) {
        $exif_info = $val;
        if ($key == "DateTimeOriginal") {
          $exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);
        }
        elseif ($key == "ExposureTime") {
  $exposure = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "1/" . ($exposure[1] / $exposure[0]);
        }
        elseif ($key == "FNumber") {
  $aperture = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = "F/" . ($aperture[0] / $aperture[1]);
        }
        elseif ($key == "FocalLength") {
  $focalLen = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($focalLen[0] / $focalLen[1]) . "mm";
        }

// GPS EXIF START - Changes by Erik Groennerud - www.koelschwasser.de 8.2007
        elseif ($key == "GPSLatitudeRef") {
  if ($exif_info == "N") {
  $GPSLatitudeRef = "Nord";
  $GPSLatfaktor = 1;
  } else {
  $GPSLatitudeRef = "Süd";
  $GPSLatfaktor = -1;
  }
 
        }
        elseif ($key == "GPSLongitudeRef") {
  if ($exif_info == "E") {
  $GPSLongitudeRef = "Ost";
  $GPSLongfaktor = 1;
  } else {
  $GPSLongitudeRef = "West";
  $GPSLongfaktor = -1;
  }
}
        elseif ($key == "GPSLatitude") {
        $GPSLatitude_h = explode("/", $exif_info[0]);
        $GPSLatitude_m = explode("/", $exif_info[1]);
        $GPSLatitude_s = explode("/", $exif_info[2]);
       
        $GPSLat_h = $GPSLatitude_h[0] / $GPSLatitude_h[1];
        $GPSLat_m = $GPSLatitude_m[0] / $GPSLatitude_m[1];
        $GPSLat_s = $GPSLatitude_s[0] / $GPSLatitude_s[1];
       
        $GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
       
        $exif_array[$exif_match[$key]] =  $GPSLatitudeRef . " " .$GPSLat_h . "° ". $GPSLat_m . "' " . $GPSLat_s . "'' ($GPSLatGrad)";
        }
        elseif ($key == "GPSLongitude") {
        $GPSLongitude_h = explode("/", $exif_info[0]);
        $GPSLongitude_m = explode("/", $exif_info[1]);
        $GPSLongitude_s = explode("/", $exif_info[2]);
       
        $GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
        $GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
        $GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
       
        $GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
       
        $exif_array[$exif_match[$key]] =  $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
        }
        elseif ($key == "GPSAltitude") {
      $GPSAltitude = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($GPSAltitude[0] / $GPSAltitude[1]) . " Meter über NN";
        } 
// GPS EXIF ENDE

        else {
          $exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }
  }
  return $exif_array;
}

Desweiteren habe ich die EXIF Ausgabe Funktion ergänzt:

Code: [Select]
          foreach ($exif_array as $key => $val) {
// GPS EXIF Modifikatio START
          if (($key != "GPSLongitudeRef") &&  ($key != "GPSLatitudeRef")) {
          if ($key == "GPSLongitude") {
          $GPSLongtude = substr (strrchr($val, "("), 1);
          $GPSLongtude = substr ($GPSLongtude,0, strlen($GPSLongtude)-1);
          }
          if ($key == "GPSLatitude") {
          $GPSLatitude = substr (strrchr($val, "("), 1);
          $GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);
          }
// GPS EXIF Modifikatio ENDE
                      $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
                      $site_template->register_vars(array(
                        "exif_value" => format_text($val),
                        "exif_name" => $lang['exif_'.$key],
                        "row_bg_number" => $row_bg_number
                        ));
                        $exif_info .= $site_template->parse_template("exif_bit");
// GPS EXIF Modifikatio START
                  }
          }
          if (($GPSLongtude != "") && ($GPSLatitude != "")) {
          $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
          $Beschreibung = "Google Map";
// Google Map Settings & Google API Key (http://www.google.com/apis/maps/)
          $Karte = "<a href = 'http://maps.google.de/maps?ll=$GPSLatitude,$GPSLongtude&spn=0.005,0.005&t=h' target='_blank'>Position in neuer Google Maps öffnen</a><br>
                      <script src='http://maps.google.com/maps?file=api&amp;v=2&amp;key=PUT_YOUR_API_KEY_HERE!!!'
      type='text/javascript'></script>
    <script type='text/javascript'>
    //<![CDATA[
     function load() {
        if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById('map'));
        map.setCenter(new GLatLng($GPSLatitude,$GPSLongtude), 18, G_HYBRID_MAP);
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GScaleControl());
      map.addControl(new GOverviewMapControl());
      var infoTabs = [
  new GInfoWindowTab('Info', '<font color=\'#000000\'>Die Aufnahme wurde an dieser Position aufgenommen</font>'),
  new GInfoWindowTab('Koordinaten','<font color=\'#000000\'>Breitengrad: $GPSLatitude<br>Längengrad: $GPSLongtude</font>')
];
      var marker = new GMarker(map.getCenter());
GEvent.addListener(marker, 'click', function() {
  marker.openInfoWindowTabsHtml(infoTabs);
  });
  map.addOverlay(marker);
marker.openInfoWindowTabsHtml(infoTabs);
      }
    }
    //]]>
    </script>
  <body onload='load()' onunload='GUnload()'>
    <div id='map' style='width: 700px; height: 300px'></div>
          ";
          $site_template->register_vars(array(
                        "exif_value" => $Karte,
                        "exif_name" => $Beschreibung,
                        "row_bg_number" => $row_bg_number
                        ));
                        $exif_info .= $site_template->parse_template("exif_bit");
          }
// GPS EXIF Modifikatio ENDE
        }
      }
    }
    $site_template->register_vars(array(

Wer keine Lust hat die zwei Blöcke in die functions.php hinzukopieren, der läd sich einfach meine functions.php herunter.

Ihr müßt auf jeden Fall für Euch einen eigenen Google Map Api Key erstellen, den es einfach hier gibt: http://www.google.com/apis/maps/signup.html Sucht Anschließend in Eurer modifizierten functions.php nach "PUT_YOUR_API_KEY_HERE!!!" und kopiert diesen dorthin.

Das ganze ist bestimmt nicht die schönste Art, wie die Google Mapp integriert ist, aber sie funktioniert.
Die Größe der Google Karte kann über die Parameter innerhalb des Google Codes verändert werden.

Über Eure Anregungen und Verbesserungen würde ich mich freuen, auch ob es bei Euch auch funktioniert.

Gerade noch entdeckt: Hatte kleinen Fehler in der Extrahierung der GPS Koordinaten für Google, sollte nun gefixt sein.
- Ein weiterer kleiner Bug, der Koordinaten südlich des Äquators und Westlich von Greenwich falsch darstellte. Koordinaten für Google müssen dann negativ sein.

- Ost und West Längengrad wurden nicht unterschieden, da IF-Abfrage auf "O" eingestellt war. Muß "E" heißen. Der Block muß dann so aussehen:
Code: [Select]
elseif ($key == "GPSLongitudeRef") {
  if ($exif_info == "E") {
  $GPSLongitudeRef = "Ost";
  $GPSLongfaktor = 1;
  } else {
  $GPSLongitudeRef = "West";
  $GPSLongfaktor = -1;
  }

Viel Spaß

Erik
http://www.koelschwasser.de
http://www.koelschwetter.de


PS: Wer GPS Wegdaten hat, kann diese mit dem kostenlosen Programm "Location Stamper" von MS in seine Bilder schreiben:
http://research.microsoft.com/research/downloads/Details/eadb6a33-b1b8-4c4d-b713-64fae728f74f/Details.aspx

PPS: Habe meine erweiterte Functions.php mal angehangen. Kleine kosmetische Verbesserungen.

PPPS: Die angehangene function.php ist für Version 1.7.4 - eine aktualisierte Version wird demnächst erscheinen.

5
Hallo 4images Fans,

betreibe eine private Bildergallery und bin absolut begeistert von der Gallery.
Habe auch schon einige Mods in meine Gallery eingebaut und Programmiere gerade an der GPS (Geocaching) Funktion, so daß Bilder in einer Google Map angezeigt werden (dazu in ein paar Wochen mehr).
Das letzte Release (1.7.4) von 4images ist ja schon ein paar Tage her und es hat mich einiges an Arbeit gekostet, meine MODs wieder unter der neuen Version ans laufen zu bekommen.

Wie wird es in Zukunft mit neuen Versionen gehandhabt, werden dort einige MODs mit aufgenimmen (z.B. Multiupload, Flash Slideshow, User Category creation, GPS und EXIF -> Google maps, usw.), so daß bei einem Update nicht alle Mods neu angepaßt werden müssen?

In welchen Abständen erscheinen neue Versionen von 4Images, ist die Version 2.0 schon geplant?

@Jan, kannst Du mir/uns hier näheres zu 4Images sagen, wie die Zukunft von dem Script aussieht?

Danke und Grüße aus Köln

Erik
www.koelschwasser.eu

6
Installation, Update & Configuration / Genereller Passwortschutz
« on: November 24, 2006, 11:58:19 AM »
Hallo,

ich möchte die Gallery generell mit einem Apache Passwortschutz versehen, so daß nur Freunde und bekannte die Seite betreten können. Dazu habe ich eine htaccess-Datei in Document root gelegt, eine weitere für mich als Admin in das Admin-Verzeichnis.
Dies funktioniert auch einwandfrei, es gibt leider nur zwei kleine Probleme:

Postkarten funktionieren nicht, RSS-Feeds ebenfalls nicht.

Kann man irgendwie die versendeten URLs für die Postkarte und den RSS-Feed mit einer Passwort versehen, z.b. http://username:passwort@galleryurl so daß nur die extern genutzten Seiten dieses Format aufweisen.

Hat jemand eine Idee?

Grüße

Erik


7
Mods & Plugins (Requests & Discussions) / RSS mit integrierten Bildern
« on: November 06, 2006, 08:59:26 AM »
Hallo,

habe mit dem RSS_Feed der Gallery gespielt und bin begeistert, fehlt leider nur noch, daß die Bilder direkt als Vorschau mit angezeigt werden.

Nutze bereits den Flickr-FSS Feed und dort wird das Vorschaubild direkt mit angezeigt. Vielleicht kannd er RSS_Feed hier so angepaßt werden, daß dies auch so möglich ist:

Z.B.:

http://api.flickr.com/services/feeds/photos_public.gne

Grüße

Erik

8
Installation, Update & Configuration / Falscher Link in EMail zur Postcard
« on: November 06, 2002, 12:28:30 AM »
Hallo,

hallo Leute,

habe leider das Problem, daß der Link in der EMail zur Postkarte falsch erkannt wird und somit der User diese nicht abrufen kann.
Ich habe den Port des Webservers verdreht, der im Link auch richtig erkannt wird, nur erscheint ein Doppelpunkt zuviel.
Hier ein beispiellink:

http://wewewe.xxxxx.net:8000:/gallery/postcards.php?postcard_id=
_________________________^ Der muß weg!!
Ich muß den Doppelpunkt nach der 8000 löschen, dann ist es ok, doch wie änder ich dies, so daß dies direkt richtig in der EMail des Emfaängers erscheint?

Tips wären hilfreich....

Grüße

Erik

9
Installation, Update & Configuration / Update auf 1.7: GD und GIF-Dateien
« on: September 11, 2002, 12:47:06 AM »
Hallo Zusammen,

nach dem updaten von 1.6.1 auf 1.7 bricht der Auto-Thumbnailer bei dem Versuch GIF-Dateien umzuwandeln nun ab und macht nicht mehr weiter.
Bei 1.6.1 arbeiterte er wenigstens die komplette Liste ab (Gifs wurden, Dank Unisys nicht erzeugt) und gab einen Fehlermeldung aus, nun ist einfach ende.
Hat jemand eine Idee, woran die liegen könnte?
Kann man nicht einfach mal die GIFs so markieren, daß diese nicht immer im Auto-Thumbnailer wieder auftauchen?


Erik

PS:
warum ist denn die EInstellung

ändere mal in "includes/constants.php"
Code:
define('CONVERT_IS_GD2', 0);

zu
Code:
define('CONVERT_IS_GD2', 1);

nicht direkt irgendwo vermerkt, bzw. beim update voreingestellt?

10
Feedback & Suggestions / Große Bilder & Autoresize
« on: July 05, 2002, 12:36:02 AM »
Hallo Jan,

Ersteinmal HERZLICHEN GLÜCKWUNSCH zu Deinem genialen Script. Gefällt mirr richtig gut, auch wenn ich noch die ein oder andere Funktion gerne hätte.
Was ich vermisse, ist eine Funktion, so daß ich auch zwischengrößen von Bildern speichern kann.
Ich benutze eine Digitalkammera, die 1 MB große Bilder macht. Diese möchte ich gerne schön in Dein Programm einsortieren, was auch prima klappt. Thumbnails werden auch super serstellt, nur mit dem AutoResizer kann ichmich nicht angewöhnen, da er mir das Originalbild verkleinert und überschreibt.
Ich würde gerne in der Übersicht das Thumbnail, in der Detailansicht ein automatisch angelegtes Bild und dann eine Möglichkeit, das Full Size Bild anzuschauen, bzw. herunter zu laden.
wenn der Download das originalbild benutzen würde, wäre es genial.

Gruß und weiter viel Glück mit Deinem Script.

Erik

Pages: [1]