4images Forum & Community

4images Modifications / Modifikationen => Mods & Plugins (Releases & Support) => Topic started by: Rembrandt on April 22, 2011, 11:09:26 PM

Title: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on April 22, 2011, 11:09:26 PM
Hi!

Codeupdate: step 8.) 10.) 16.02.2013

Für V1.7.10 oder höher.

Dieser MOD erweitert die in der Version 1.7.10 enthaltene EXIF funktion um folgendes:

Alle EXIF Daten der Bilder, werden ausgelesen und in die Datenbank geschrieben.
Dadurch können Bilder nach EXIF Daten gesucht werden.

Optional 1: wenn in den Bilder Geo Koordinaten vorhanden sind können diese in einer Google Map (inkl. Wetterdaten) dagestellt werden.
Optional 2: Member Google Map Addon, EXIF Daten werden auch in die Datenbank geschrieben, wenn die Bilder über das Member Uploadformular hoch geladen werden.  
            Member können mittels einer Google Map den Bilder Geo Koordinaten hinzufügen.

Zu Modifizierenden Dateien:
 1.) SQL Table "wordmatch","images" und "images_temp" erstellen.
       (im Anhang befindet sich die install_iptc.php um die benötigten Datenbankfelder automatisch anzulegen.)
 2.) admin/checkimages.php
 3.) includes/db_field_definitions.php
 4.) includes/functions.php
 5.) root/config.php
 6.) lang/your lang/main.php
 7.) EXIF Daten der Bilder in die Datenbank schreiben.

1.)  speichert die datei "install_exif.php" aus dem anhang in euren root ab, und ruft sie auf.

2.) suche in der admin/checkimage.php:

$sql = "INSERT INTO ".IMAGES_TABLE."

füge  darüber ein:

//############################### Start Exif ############################################
  $src_file = ($big_file) ? MEDIA_PATH."/".$cat_id."/".$big_folder."/".$big_file : $file;
  $size = getimagesize ($src_file, $info);
    if(function_exists('exif_read_data') && $exif_data = @exif_read_data($src_file, 'EXIF')) {
          $exif_array = get_exif_info($exif_data);
      foreach ($exif_array as $key => $val) {
        $additional_field_sql .= ',image_'.$key;
        $additional_value_sql .= ",'".$val."'";
      }
    }
//############################### End Exif #############################################

2.1) suche:

add_searchwords($image_id, $search_words);

füge darunter ein:

//################################## Start Exif IPTC  #########################
          $sql = "SELECT image_id".$additional_field_sql."
                  FROM ".IMAGES_TABLE."
                  WHERE image_id = $image_id
                  ";
          $result = $site_db->query($sql);
          while ($row = $site_db->fetch_array($result)) {
            $additional_search_words = array();
            foreach ($search_match_fields as $image_column => $match_column) {
              if (isset($row[$image_column])) {
                $additional_search_words[$image_column] = $row[$image_column];
              }
            }
            add_searchwords($image_id, $additional_search_words);
          };
//################################## End Exif IPTC ##########################


3.)  suche in der includes/db_field_definition.php

?>

füge darüber ein:

//################################ Start Exif ##################################################
$additional_image_fields['image_Make'] = array($lang['exif_Make'], "text", 0);
$additional_image_fields['image_Model'] = array($lang['exif_Model'], "text", 0);
$additional_image_fields['image_DateTimeOriginal'] = array($lang['exif_DateTimeOriginal'], "text", 0);
$additional_image_fields['image_ISOSpeedRatings'] = array($lang['exif_ISOSpeedRatings'], "text", 0);
$additional_image_fields['image_ExposureTime'] = array($lang['exif_ExposureTime'], "text", 0);
$additional_image_fields['image_FNumber'] = array($lang['exif_FNumber'], "text", 0);
$additional_image_fields['image_FocalLength'] = array($lang['exif_FocalLength'], "text", 0);
$additional_image_fields['image_ExposureBiasValue'] = array($lang['exif_ExposureBiasValue'], "text", 0);
$additional_image_fields['image_ApertureValue'] = array($lang['exif_ApertureValue'], "text", 0);
$additional_image_fields['image_MaxApertureValue'] = array($lang['exif_MaxApertureValue'], "text", 0);
$additional_image_fields['image_MeteringMode'] = array($lang['exif_MeteringMode'], "text", 0);
$additional_image_fields['image_Flash'] = array($lang['exif_Flash'], "text", 0);
$additional_image_fields['image_ExposureProgram'] = array($lang['exif_ExposureProgram'], "text", 0);
$additional_image_fields['image_ExposureMode'] = array($lang['exif_ExposureMode'], "text", 0);
$additional_image_fields['image_WhiteBalance'] = array($lang['exif_WhiteBalance'], "text", 0);
$additional_image_fields['image_GPSLatitudeRef'] = array($lang['exif_GPSLatitudeRef'], "text", 0);
$additional_image_fields['image_GPSLatitude'] = array($lang['exif_GPSLatitude'], "text", 0);
$additional_image_fields['image_GPSLongitudeRef'] = array($lang['exif_GPSLongitudeRef'], "text", 0);
$additional_image_fields['image_GPSLongitude'] = array($lang['exif_GPSLongitude'], "text", 0);
$additional_image_fields['image_GPSAltitude'] = array($lang['exif_GPSAltitude'], "text", 0);
$additional_image_fields['image_GPSTrack'] = array($lang['exif_GPSTrack'], "text", 0);
//################################ End Exif #################################################


4.)  suche in der includes/functions.php:

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";

  $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") {
          $ExposureTime = explode("/", $exif_info);
          if ((float)$ExposureTime[1] == 0) {
            $exif_array[$exif_match[$key]] = "0 sec(s)";
          }
          elseif (($ExposureTime[0]/$ExposureTime[1]) >= 0.3) {
            $exif_array[$exif_match[$key]] = round(($ExposureTime[0]/$ExposureTime[1]),1)." sec(s)";
          }
          else {
            $exif_array[$exif_match[$key]] = "1/".round((1/($ExposureTime[0]/$ExposureTime[1])),0)." sec(s)";
          }
        }
        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";
        }
        else {
          $exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }
  }
  return $exif_array;
}

und ersetze es mit:

function get_exif_info($exif) {
$exif_match = array();
  $exif_match['Make'] = "Make";
  $exif_match['Model'] = "Model";
  $exif_match['DateTimeOriginal'] = "DateTimeOriginal";
  $exif_match['ISOSpeedRatings'] = "ISOSpeedRatings";
  $exif_match['ExposureTime'] = "ExposureTime";
  $exif_match['FNumber'] = "FNumber";
  $exif_match['FocalLength'] = "FocalLength";
  $exif_match['ExposureBiasValue'] = "ExposureBiasValue";
  $exif_match['ApertureValue'] = "ApertureValue";
  $exif_match['MaxApertureValue'] = "MaxApertureValue";
  $exif_match['MeteringMode'] = "MeteringMode";
  $exif_match['Flash'] = "Flash";
  $exif_match['ExposureProgram'] = "ExposureProgram";
  $exif_match['ExposureMode'] = "ExposureMode";
  $exif_match['WhiteBalance'] = "WhiteBalance";
  $exif_match['GPSLatitude'] = "GPSLatitude";
  $exif_match['GPSLatitudeRef'] = "GPSLatitudeRef";
  $exif_match['GPSLongitude'] = "GPSLongitude";
  $exif_match['GPSLongitudeRef'] = "GPSLongitudeRef";
  $exif_match['GPSAltitude'] = "GPSAltitude";
  $exif_match['GPSTrack'] = "GPSTrack";

  $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" ) {
          $ExposureTime = explode("/", $exif_info);
          if(($ExposureTime[0]/$ExposureTime[1]) >= 0.3 ) {
              $exif_array[$exif_match[$key]] = round(($ExposureTime[0]/$ExposureTime[1]),1)." sec(s)";
          }
          else{
            $exif_array[$exif_match[$key]] = "1/".round((1/($ExposureTime[0]/$ExposureTime[1])),0)." sec(s)";
          }
        }
        elseif ($key == "FNumber") {
            $FNumber = explode("/", $exif_info);
                $exif_array[$exif_match[$key]] = "F/" . ($FNumber[0] / $FNumber[1]);
        }
        elseif ($key == "FocalLength") {
            $FocalLength = explode("/", $exif_info);
                $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])) . " mm";
        }
        elseif ($key == "ExposureBiasValue") {
            $ExposureBiasValue = explode("/", $exif_info);
                $exif_array[$exif_match[$key]] = round(($ExposureBiasValue[0] / $ExposureBiasValue[1]), 1) . " EV";
        }
        elseif ($key == "ApertureValue") {
            $ApertureValue = explode("/", $exif_info);
                $exif_array[$exif_match[$key]] ="F/" . round(($ApertureValue[0] / $ApertureValue[1]), 1);
        }
        elseif ($key == "MaxApertureValue") {
            $MaxApertureValue = explode("/", $exif_info);
                $exif_array[$exif_match[$key]] ="F/" . round((pow(sqrt(2),$MaxApertureValue[0] / $MaxApertureValue[1])), 1);  
        }
        elseif ($key == "MeteringMode") {
          if($exif_info == 0) {$MeteringMode = "Unbekannt";}
          if($exif_info == 1) {$MeteringMode = "Durchschnitt";}
          if($exif_info == 2) {$MeteringMode = "Mittenbetont";}  
          if($exif_info == 3) {$MeteringMode = "Spot";}
          if($exif_info == 4) {$MeteringMode = "Multi-Spot";}
          if($exif_info == 5) {$MeteringMode = "Multi-Segment";}
          if($exif_info == 6) {$MeteringMode = "Selektiv";}
          if($exif_info == 255) {$MeteringMode = "Unbekannt";}
            $exif_array[$exif_match[$key]] = ($MeteringMode);
        }
        elseif ($key == "Flash") {
          if($exif_info == 0) {$Flash = "Kein Blitz";}
          if($exif_info == 1) {$Flash = "Blitz ausgelöst";}
          if($exif_info == 5) {$Flash = "Blitz ausgelöst but strobe return light not detected";}
          if($exif_info == 7) {$Flash = "Blitz ausgelöst and strobe return light detected";}
          if($exif_info == 9) {$Flash = "Blitz ausgelöst, erzwungener Blitz";}
          if($exif_info == 13) {$Flash = "Blitz ausgelöst, erzwungener Blitz, return light not detected";}
          if($exif_info == 15) {$Flash = "Blitz ausgelöst, erzwungener Blitz, return light detected";}
          if($exif_info == 16) {$Flash = "Blitz nicht ausgelöst";}
          if($exif_info == 24) {$Flash = "Flash did not fire, auto mode";}
          if($exif_info == 25) {$Flash = "Blitz ausgelöst, auto mode";}
          if($exif_info == 29) {$Flash = "Blitz ausgelöst, auto mode, return light not detected";}
          if($exif_info == 31) {$Flash = "Blitz ausgelöst, auto mode, return light detected";}
          if($exif_info == 32) {$Flash = "keine Blitzfunktion";}
          if($exif_info == 65) {$Flash = "Blitz ausgelöst, Rote Augen Reduktion";}
          if($exif_info == 69) {$Flash = "Blitz ausgelöst, Rote Augen Reduktion, return light not detected";}
          if($exif_info == 71) {$Flash = "Blitz ausgelöst, Rote Augen Reduktion, return light detected";}
          if($exif_info == 73) {$Flash = "Blitz ausgelöst, erzwungener Blitz, Rote Augen Reduktion";}
          if($exif_info == 77) {$Flash = "Blitz ausgelöst, erzwungener Blitz, Rote Augen Reduktion, return light not detected";}
          if($exif_info == 79) {$Flash = "Blitz ausgelöst, erzwungener Blitz, Rote Augen Reduktion, red-eye reduction mode, return light detected";}
          if($exif_info == 89) {$Flash = "Blitz ausgelöst, auto mode, Rote Augen Reduktion";}
          if($exif_info == 93) {$Flash = "Blitz ausgelöst, auto mode, return light not detected, Rote Augen Reduktion";}
          if($exif_info == 95) {$Flash = "Blitz ausgelöst, auto mode, return light detected, Rote Augen Reduktion";}
            $exif_array[$exif_match[$key]] = ($Flash);
        }
        elseif ($key == "ExposureProgram") {
          if($exif_info == 1) {$ExposureProgram = "Manuell";}
          if($exif_info == 2) {$ExposureProgram = "Programmautomatik";}
          if($exif_info == 3) {$ExposureProgram = "Zeitautomatik";}
          if($exif_info == 4) {$ExposureProgram = "Blendenautomatik";}
          if($exif_info == 5) {$ExposureProgram = "Stilleben";}
          if($exif_info == 6) {$ExposureProgram = "Sport";}
          if($exif_info == 7) {$ExposureProgram = "Portrait";}
          if($exif_info == 8) {$ExposureProgram = "Landschaft";}
          $exif_array[$exif_match[$key]] = ($ExposureProgram);
        }
        elseif ($key == "ExposureMode") {
          if($exif_info == 0) {$ExposureMode = "Automatisch";}
          if($exif_info == 1) {$ExposureMode = "Manuell";}
          if($exif_info == 2) {$ExposureMode = "Belichtungsreihe";}  
          if($exif_info == 255) {$ExposureMode = "Unbekannt";}
          $exif_array[$exif_match[$key]] = ($ExposureMode);
        }
        elseif ($key == "WhiteBalance") {
          if($exif_info == 0) {$WhiteBalance = "Automatisch";}
          if($exif_info == 1) {$WhiteBalance = "Manuell";}
          $exif_array[$exif_match[$key]] = ($WhiteBalance);
        }
        elseif ($key == "GPSLatitudeRef") {
          if ($exif_info == 'N') {$GPSLatitudeRef = "Nord";$GPSLatfaktor = 1;}
          if ($exif_info == 'S') {$GPSLatitudeRef = "Süd"; $GPSLatfaktor = -1;}
          $exif_array[$exif_match[$key]] = ($GPSLatitudeRef);
        }
        elseif ($key == "GPSLongitudeRef") {
          if ($exif_info == 'E') {$GPSLongitudeRef = "Ost";$GPSLongfaktor = 1;}  
          if ($exif_info == 'W') {$GPSLongitudeRef = "West";$GPSLongfaktor = -1;}
            $exif_array[$exif_match[$key]] = ($GPSLongitudeRef);
        }
        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 = round($GPSLatitude_s[0] / $GPSLatitude_s[1],6);
          
          $GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
          
          $exif_array[$exif_match[$key]] =  ($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 = round($GPSLongitude_s[0] / $GPSLongitude_s[1],6);
          
          $GPSLongGrad = $GPSLongfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
          
          $exif_array[$exif_match[$key]] =  ($GPSLongGrad);
        }
        
        elseif ($key == "GPSAltitudeRef") {
          $GPSAltitudeRef = bin2hex($exif_info[0]);
          if($GPSAltitudeRef == 00) {$GPSAltitudeRef = " über Meeresspiegel";}
          if($GPSAltitudeRef == 01) {$GPSAltitudeRef = " unter Meeresspiegel";}
          $exif_array[$exif_match[$key]] = ($GPSAltitudeRef);
        }
      
        elseif ($key == "GPSAltitude") {
          $GPSAltitude = explode("/", $exif_info);
            $exif_array [$exif_match[$key]] = round(($GPSAltitude[0] / $GPSAltitude[1])) ." m";
        }
        elseif ($key == "GPSTrack") {
          $GPSTrack = explode("/", $exif_info);
            $exif_array[$exif_match[$key]] = ($GPSTrack[0]/$GPSTrack[1]) . "°";
        }  
        else {
          $exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }
  }
  return $exif_array;
 }
// ##################### End EXIF #######################################


4.1) suche:

        if ($detailed_view && $image_info[2] == 2 && function_exists('exif_read_data') && $exif_data = @exif_read_data($src, 'EXIF')) {
          $exif_array = get_exif_info($exif_data);
          $bgcounter = 0;
          foreach ($exif_array as $key => $val) {
            $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");
          }
        }

ersetze es mit:

//############################ Start EXIF ##############################
        if ($detailed_view ) {
          global $site_db,$lang,$additional_image_fields;
          $additional_field_sql = "";
          foreach ($additional_image_fields as $key => $val){
            $additional_field_sql .= ','.$key;
          }
          $sql = "SELECT image_id".$additional_field_sql."
                  FROM ".IMAGES_TABLE."
                  WHERE image_id = '$image_id'";
          $result = $site_db->query($sql);
          $row = mysql_fetch_object($result);
          $GPSLongitude = $row->image_GPSLongitude;
          $GPSLatitude = $row->image_GPSLatitude;          
          $bgcounter = 0;
          foreach ($row as $key => $val) {
            if ($val != "") {
              $search_key = $key;
              $url_val = '"' . $val . '"';
              $val = (is_numeric($val)) ? round($val,6) : $val;
              $key = str_replace('image_','',($key));
            
              if (isset($lang['exif_'.$key])) {
                $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
                
                $site_template->register_vars(array(
                  "exif_value" => "<a href=\"".$site_sess->url(ROOT_PATH."search.php?search_keywords=".urlencode($url_val))."&amp;search_fields=$search_key \">".format_text($val)."</a>",
                  "exif_name" => $lang['exif_'.$key],
                  "row_bg_number" => $row_bg_number,
                  "image_lat" => $GPSLatitude,
                  "image_lon" => $GPSLongitude
                ));
                $exif_info .= $site_template->parse_template("exif_bit");
              }
            }
          }
        }
//########################### End Exif ###################################


5.) suche in der root/config.php:

?>

füge davor ein:

$search_index_types = array(
  "image_id" =>  "phrase",
  "image_Make" => "phrase",
  "image_Model" => "phrase",
  "image_DateTimeOriginal" => "phrase",
  "image_ISOSpeedRatings" => "phrase",
  "image_ExposureTime" => "phrase",
  "image_FNumber" => "phrase",
  "image_FocalLength" => "phrase",
  "image_ExposureBiasValue" => "phrase",
  "image_ApertureValue" => "phrase",
  "image_MaxApertureValue" => "phrase",
  "image_MeteringMode" => "phrase",
  "image_Flash" => "phrase",
  "image_ExposureProgram" => "phrase",
  "image_ExposureMode" => "phrase",
  "image_WhiteBalance" => "phrase",
  "image_GPSLatitude" => "phrase",
  "image_GPSLatitudeRef" => "phrase",
  "image_GPSLongitude" => "phrase",
  "image_GPSLongitudeRef" => "phrase",
  "image_GPSAltitude" => "phrase",
  "image_GPSTrack" => "phrase",
  );
$search_match_fields = array(
    "image_name" => "name_match",
    "image_description" => "desc_match",
    "image_keywords" => "keys_match",
    "image_Make" => "Make_match",
    "image_Model" => "Model_match",
    "image_DateTimeOriginal" => "DateTimeOriginal_match",
    "image_ISOSpeedRatings" => "ISOSpeedRatings_match",
    "image_ExposureTime" => "ExposureTime_match",
    "image_FNumber" => "FNumber_match",
    "image_FocalLength" => "FocalLength_match",
    "image_ExposureBiasValue" => "ExposureBiasValue_match",
    "image_ApertureValue" => "ApertureValue_match",
    "image_MaxApertureValue" => "MaxApertureValue_match",
    "image_MeteringMode" => "MeteringMode_match",
    "image_Flash" => "Flash_match",
    "image_ExposureProgram" => "ExposureProgram_match",
    "image_ExposureMode" => "ExposureMode_match",
    "image_WhiteBalance" => "WhiteBalance_match",
    "image_GPSLatitude" => "GPSLatitude_match",
    "image_GPSLatitudeRef" => "GPSLatitudeRef_match",
    "image_GPSLongitude" => "GPSLongitude_match",
    "image_GPSLongitudeRef" => "GPSLongitudeRef_match",
    "image_GPSAltitude" => "GPSAltitude_match",
    "image_GPSTrack" => "GPSTrack_match",
);


6.) suche in lang/your lang/main.php:
(english)

$lang['exif_make'] = "Make:";
$lang['exif_model'] = "Model:";
$lang['exif_datetime'] = "Date created:";
$lang['exif_isospeed'] = "ISO speed:";
$lang['exif_exposure'] = "Exposure time:";
$lang['exif_aperture'] = "Aperture value:";
$lang['exif_focallen'] = "Focal length:";

and replace:

$lang['exif_Make'] = "Make:";
$lang['exif_Model'] = "Modell:";
$lang['exif_DateTimeOriginal'] = "Exposure,Date and Time:";
$lang['exif_ISOSpeedRatings'] = "ISO Speed Rating:";
$lang['exif_ExposureTime'] = "Exposure Time:";
$lang['exif_FNumber'] = "Aperture:";
$lang['exif_FocalLength'] = "Focal Length (Object Lens):";
$lang['exif_ExposureBiasValue'] = "Exposure Bias Value:";
$lang['exif_ApertureValue'] = "Aperture Value:";
$lang['exif_MaxApertureValue'] = "Max Aperture Value:";
$lang['exif_MeteringMode'] = "Metering Mode:";
$lang['exif_Flash'] = "Flash:";
$lang['exif_ExposureProgram'] = "Exposure Program:";
$lang['exif_ExposureMode'] = "Exposure Mode:";
$lang['exif_WhiteBalance'] = "Whitebalance:";
$lang['exif_GPSLatitudeRef'] = "GPS Latitude Referenz:";
$lang['exif_GPSLatitude'] = "GPS Latitude:";
$lang['exif_GPSLongitudeRef'] = "GPS Longitude Referenz";
$lang['exif_GPSLongitude'] = "GPS Longitude:";
$lang['exif_GPSAltitude'] = "GPS Altitude:";
$lang['exif_GPSTrack'] = "GPS Track:";

suche:
(deutsch)

$lang['exif_make'] = "Hersteller:";
$lang['exif_model'] = "Modell:";
$lang['exif_datetime'] = "Aufnahmedatum:";
$lang['exif_isospeed'] = "ISO-Zahl:";
$lang['exif_exposure'] = "Belichtungszeit:";
$lang['exif_aperture'] = "Blende:";
$lang['exif_focallen'] = "Brennweite:"

und ersetze es mit:    

$lang['exif_Make'] = "Hersteller:";
$lang['exif_Model'] = "Modell:";
$lang['exif_DateTimeOriginal'] = "Aufnahme,Datum und Zeit:";
$lang['exif_ISOSpeedRatings'] = "ISO Wert:";
$lang['exif_ExposureTime'] = "Belichtungszeit:";
$lang['exif_FNumber'] = "Blende:";
$lang['exif_FocalLength'] = "Brennweite (Objektiv):";
$lang['exif_ExposureBiasValue'] = "Belichtungsabweichung:";
$lang['exif_ApertureValue'] = "Blendenöffnungswert:";
$lang['exif_MaxApertureValue'] = "Maximaler Blendenöffnungswert:";
$lang['exif_MeteringMode'] = "Belichtungsmessung:";
$lang['exif_Flash'] = "Blitz:";
$lang['exif_ExposureProgram'] = "Belichtungsprogramm:";
$lang['exif_ExposureMode'] = "Belichtungsmodus:";
$lang['exif_WhiteBalance'] = "Weißabgleich:";
$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:";
$lang['exif_GPSTrack'] = "GPS Blickrichtung:";


7.)  Kopiert die Datei "create_exif_data.php" (im Anhang) nach admin/plugins und führ sie 1x aus.
    Mit dieser Datei werden die schon vorhanden Bilder der Galerie nach EXIF Daten durchsucht und in die Datenbank geschrieben.
    Falls ihr schon EXIF Daten in der Datenbank habt braucht ihr diesen schritt nicht durchführen.
 
 
OPTION 1: wenn in den Bilder Geo Koordinaten vorhanden sind können diese in einer Google Map dagestellt werden.

8.)  erstellt in euren root einen neuen ordner mit den namen "js" und speichert die datei "googlemap.js"(im anhang) darin ab.
  
9.)  suche in schritt 4.):

      }
    }
    $site_template->register_vars(array(
      "media_src" => $media_src,

füge darüber ein:

//############################ Start Google Map #################################
      $google_map ="";
      $google_info ="";      
      if ((!empty($GPSLongitude)) && (!empty($GPSLatitude))){
        $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;

        $google_info = "
           &nbsp;<a href = 'http://maps.google.de/maps?q=$GPSLatitude,$GPSLongitude&amp;t=h&amp;ie=UTF8&amp;ll=$GPSLatitude,$GPSLongitude&amp;spn=0.002316,0.005021&amp;z=18&amp;om=1' onclick=\"void(window.open(this.href, '', '')); return false;\">Position in Google Karte öffnen</a>
          <br>
          &nbsp;<a href = 'http://maps.live.com/default.aspx?v=2&amp;cp=$GPSLatitude~$GPSLongitude&amp;style=h&amp;lvl=17&amp;tilt=-90&amp;dir=0&amp;alt=-1000&amp;scene=6176719&amp;encType=1' onclick=\"void(window.open(this.href, '', '')); return false;\">Position in Microsoft Live Karte öffnen</a>
          <br>
          &nbsp;<a href = 'http://www.flashearth.com/?lat=$GPSLatitude&amp;lon=$GPSLongitude&amp;z=15.8&amp;r=0&amp;src=ggl' onclick=\"void(window.open(this.href, '', '')); return false;\">Position in Flash Earth öffnen</a><br>
         ";

        $google_map = "
          <script type='text/javascript' src='./js/googlemap.js'></script>
            <script type='text/javascript'>
              GPSLatitude = '$GPSLatitude';
              GPSLongitude = '$GPSLongitude';
              imagename = '$image_name';
            </script>
         ";
     }
           $site_template->register_vars(array(
        "google_map" => $google_map,
        "google_info" => $google_info
      ));
  //############################ End Google Map ##########################


10.) suche in deinen template/details.html:
Code: [Select]
{endif exif_info}
füge darunter ein:
Code: [Select]
                 {if google_map}
                    <br>
                    <table width="100%" border="0" cellspacing="0" cellpadding="1">
                      <tr>
                        <td class="bordercolor">
                          <table width="100%" border="0" cellpadding="3" cellspacing="0">
                            <tr>
                            <td class="head1" valign="top"colspan="2">Google Info: &nbsp;</td>
                            </tr>
                          </table>
                          <table  width="100%"  border="0" class="row1"cellpadding="3" cellspacing="0">
                            <tr>  
                              <td valign="top" cellpadding="3" width="260px" class="row1">
                              {google_info}
                              </td>
                              <td class="google">
                                <div id="map_canvas" style="float:left;width:500px;height:300px;margin:10px 0px;"></div>
                                {google_map}
                              </td>
                            </tr>
                          </table>
                        </td>
                      </tr>
                    </table>
                  {endif google_map}

mfg Andi

66
Title: Member Google Map Addon
Post by: Rembrandt on April 23, 2011, 08:07:18 PM
Code Update: step 2.1) 3.); 16.02.2013

EXIF Daten werden auch in die Datenbank geschrieben, wenn die Bilder über das Member Uploadformular hoch geladen werden.  
 Member können mittels einer Google Map den Bilder Geo Koordinaten hinzufügen.
 
1.) suche in der member.php im abschnitt($action == "updateimage"):

$image_keywords = implode(',', array_unique(array_filter($image_keywords_arr)));

füge darunter ein:

//####################### Start Googlemap ############################
  $image_GPSLatitude = intval($HTTP_POST_VARS['image_GPSLatitude']);
  $image_GPSLongitude = intval($HTTP_POST_VARS['image_GPSLongitude']);
//####################### End Googlemap ##############################

1.1) suche in der member.php im abschnitt($action == "updateimage"):

$additional_sql .= ", $key = '".un_htmlspecialchars(trim($HTTP_POST_VARS[$key]))."'"

füge darüber ein:

//########################## Start Google map ##########################################      
          if($HTTP_POST_VARS['image_GPSLatitude'] != 0 && $HTTP_POST_VARS['image_GPSLongitude'] != 0){
            if($key == 'image_GPSLatitude'){
              if($HTTP_POST_VARS['image_GPSLatitude']< 0 ){
                $additional_sql .= ", image_GPSLatitudeRef = 'Süd'";
              }else{
                $additional_sql .= ", image_GPSLatitudeRef = 'Nord'";
              }
              $additional_sql .= ", $key = '".(round(un_htmlspecialchars(trim($HTTP_POST_VARS[$key])),4))."'";
            }
              elseif($key == 'image_GPSLongitude'){
                if($HTTP_POST_VARS['image_GPSLongitude'] < 0 ){
                  $additional_sql .= ", image_GPSLongitudeRef = 'West'";
                }else{
                  $additional_sql .= ", image_GPSLongitudeRef = 'Ost'";
                }            
                $additional_sql .= ", $key = '".(round(un_htmlspecialchars(trim($HTTP_POST_VARS[$key])),4))."'";
              }  
              }else{
                $additional_sql .= ", image_GPSLatitudeRef = ''";
                $additional_sql .= ", image_GPSLongitudeRef = ''";
              }
//########################## End Google map #############################################


1.2) suche in der member.php im abschnitt($action == "editimage"):

  $txt_clickstream = get_category_path($image_row['cat_id'], 1).$config['category_separator']."<a href=\"".$site_sess->url(ROOT_PATH."details.php?".URL_IMAGE_ID."=".$image_id)."\"

füge darüber ein:

//######################### IPTC EXIF #########################################  
  foreach ($image_row as $key => $val) {
    if ($val && (!is_numeric($key))) {
    $hidden_fields .= "<input type=\"hidden\" name=\"$key\" value=\"$val\" />\n";
    }
  }
//######################### IPTC EXIF #########################################

1.3) suche:

  $site_template->register_vars(array(
    "image_id" => $image_id,
    "image_name" => format_text($image_name, 2),

ersetze es mit:

//################# Start Google map ##############################################################################
  $image_GPSLatitude = (isset($HTTP_POST_VARS['image_GPSLatitude'])) ? intval($HTTP_POST_VARS['image_GPSLatitude']) : ((($image_row['image_GPSLatitude'])) ? $image_row['image_GPSLatitude'] :"''");
  $image_GPSLongitude = (isset($HTTP_POST_VARS['image_GPSLongitude'])) ? intval($HTTP_POST_VARS['image_GPSLongitude']) : ((($image_row['image_GPSLongitude'])) ? $image_row['image_GPSLongitude'] :"''");
  
  $google_map = "
    <script type='text/javascript' src='./js/googlemap.js'></script>
    <script type='text/javascript'>
      var GPSLatitude = $image_GPSLatitude;
      var GPSLongitude = $image_GPSLongitude;
      var latlng = '1';
    </script>
  ";
//################# End Google map #################################################                
  $site_template->register_vars(array(
    "hidden_fields" => $hidden_fields, //########## IPTC EXIF ######################
    "google_map" => $google_map, //################# Google map ####################
    "image_id" => $image_id,
    "image_name" => format_text($image_name, 2),

1.4) suche:

    if (!$uploaderror) {
      $additional_field_sql = "";
      $additional_value_sql = "";
      if (!empty($additional_image_fields)) {
        $table = ($direct_upload) ? IMAGES_TABLE : IMAGES_TEMP_TABLE;
        $table_fields = $site_db->get_table_fields($table);
        foreach ($additional_image_fields as $key => $val) {
          if (isset($HTTP_POST_VARS[$key]) && isset($table_fields[$key])) {
            $additional_field_sql .= ", $key";
            $additional_value_sql .= ", '".un_htmlspecialchars(trim($HTTP_POST_VARS[$key]))."'";
          }
        }
      }

ersetze es mit:

    if (!$uploaderror) {
 if(!empty($additional_image_fields)) {
          //$additional_field_sql = ""; // bei exif auskommentieren
      //$additional_value_sql = ""; // bei exif auskommentieren
//############################### Start Exif ############################################
      //$src_file = ($big_file) ? MEDIA_PATH."/".$cat_id."/".$big_folder."/".$big_file : $file;
      $src_file = $src;
      $size = getimagesize ($src_file, $info);
        if(function_exists('exif_read_data') && $exif_data = @exif_read_data($src_file, 'EXIF')) {
          $exif_array = get_exif_info($exif_data);
          foreach ($exif_array as $key => $val) {
            $additional_field_sql .= ',image_'.$key;
            $additional_value_sql .= ",'".$val."'";
          }
        }      
          if(isset($exif_array['GPSLatitude'])){
            unset($additional_image_fields['image_GPSLatitude']);
            unset($additional_image_fields['image_GPSLongitude']);
          }
        $table = ($direct_upload) ? IMAGES_TABLE : IMAGES_TEMP_TABLE;
        $table_fields = $site_db->get_table_fields($table);
        foreach ($additional_image_fields as $key => $val) {
          if (isset($HTTP_POST_VARS[$key]) && isset($table_fields[$key])) {
            if(($key == 'image_GPSLatitude') && !empty($HTTP_POST_VARS['image_GPSLatitude'])){
              if($HTTP_POST_VARS['image_GPSLatitude'] < 0 ){
                $additional_field_sql .= ", image_GPSLatitudeRef";
                $additional_value_sql .= ", 'Süd'";
              }else{
                $additional_field_sql .= ", image_GPSLatitudeRef";
                $additional_value_sql .= ", 'Nord'";
              }
              $additional_field_sql .= ", $key";
              $additional_value_sql .= ", '".(round(un_htmlspecialchars(trim($HTTP_POST_VARS[$key])),4))."'";
            }
            elseif(($key == 'image_GPSLongitude') && !empty($HTTP_POST_VARS['image_GPSLongitude'])){
              if($HTTP_POST_VARS['image_GPSLongitude'] < 0 ){
                $additional_field_sql .= ", image_GPSLongitudeRef";
                $additional_value_sql .= ", 'West'";
              }else{
                $additional_field_sql .= ", image_GPSLongitudeRef";
                $additional_value_sql .= ", 'Ost'";
              }            
              $additional_field_sql .= ", $key";
              $additional_value_sql .= ", '".(round(un_htmlspecialchars(trim($HTTP_POST_VARS[$key])),4))."'";
            }
            else{ // Google map
              $additional_field_sql .= ", $key";
              $additional_value_sql .= ", '".un_htmlspecialchars(trim($HTTP_POST_VARS[$key]))."'";
            } // Google map
          }  
        }
      }

1.5)suche:

          }
          add_searchwords($image_id, $search_words);

füge darunter ein:

//######################### Start Exif IPTC  #########################
          $sql = "SELECT image_id".$additional_field_sql."
                  FROM ".IMAGES_TABLE."
                  WHERE image_id = $image_id
                  ";
          $result = $site_db->query($sql);
          while ($row = $site_db->fetch_array($result)) {
            $additional_search_words = array();
            foreach ($search_match_fields as $image_column => $match_column) {
              if (isset($row[$image_column])) {
                $additional_search_words[$image_column] = $row[$image_column];
              }
            }
            add_searchwords($image_id, $additional_search_words);
          };
//####################### End Exif IPTC #########################

1.6)suche:

  $site_template->register_vars(array(
    "cat_id" => $cat_id,
    "cat_name" => ($cat_id != 0) ? format_text($cat_cache[$cat_id]['cat_name'],

ersetze es mit:

//################# Start Google map #####################################################  
  $google_map = "
    <script type='text/javascript' src='./js/googlemap.js'></script>
    <script type='text/javascript'>
      var latlng = '1';
    </script>
  ";
//################# End Google map #####################################################
  $site_template->register_vars(array(
    "google_map" => $google_map, //googlemap
    "cat_id" => $cat_id,
    "cat_name" => ($cat_id != 0) ? format_text($cat_cache[$cat_id]['cat_name'], 2) : get_category_dropdown($cat_id),


2.)  suche in deinen template/member_editimage.html:
Code: [Select]
<form method="post" action="{url_member}" onsubmit="uploadbutton.disabled=true;">
füge darunter ein:
Code: [Select]
{hidden_fields}
2.1) suche:
Code: [Select]
             <textarea name="image_keywords" cols="30" rows="10" wrap="virtual" class="textarea">{image_keywords}</textarea>
            </td>
          </tr>

füge darunter ein:
Code: [Select]
         <tr>
            <td class="row1"><b>{lang_image_GPSLatitude}</b></td>
            <td class="row1"><input type="text" name="image_GPSLatitude"  id="lat" size="30" value="{image_GPSLatitude}" class="input" /></td>
          </tr>          
          <tr>
            <td class="row2"><b>{lang_image_GPSLongitude}</b></td>
            <td class="row2"><input type="text" name="image_GPSLongitude"  id="lng" size="30" value="{image_GPSLongitude}" class="input" /></td>
          </tr>
          <tr>
            <td class="row1"valign="top"><b>Map:</b></td>
            <td class="row1"> <div id="map_canvas" style="width: 450px; height: 300px"></div>
            {google_map}
            </td>
          </tr>


3.)  suche in deinen template/member_uploadform.html:
Code: [Select]
             <textarea cols="30" class="textarea" rows="10" name="image_keywords">{image_keywords}</textarea>
            </td>
          </tr>

füge darunter ein:
Code: [Select]
         <tr>
            <td class="row1"><b>{lang_image_GPSLatitude}</b></td>
            <td class="row1"><input type="text" name="image_GPSLatitude"  id="lat" size="30" value="{image_GPSLatitude}" class="input" /></td>
          </tr>          
          <tr>
            <td class="row2"><b>{lang_image_GPSLongitude}</b></td>
            <td class="row2"><input type="text" name="image_GPSLongitude"  id="lng" size="30" value="{image_GPSLongitude}" class="input" /></td>
          </tr>
          <tr>
            <td class="row1"valign="top"><b>Map:</b></td>
            <td class="row1">
            <div id="map_canvas" style="width: 450px; height: 300px"></div>
            {google_map}
            </td>
          </tr>


mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: mmarschner on May 14, 2011, 08:05:23 PM
Hallo Andi,

ich bin gerade dabei, die MOD umzusetzen. Leider bekomme ich schon wieder Fehler, die augenscheinlich in der config.php liegen.

Wenn ich den Code eintrage, dann bekomme ich wieder den Fehler

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/motoly.de/httpdocs/gallerie/config.php:1)

Mit der Original config.php tritt der Fehler nicht auf. Ich habe die Dateien mit dem Windows Notepad editiert. Da sollten die Dateien sicherlich im Ascii-Format gespeichert werden.

Welches Programm benutzt Du, um den Code zu erstellen, bzw. in die vorhandenen Prozeduren einzufügen?

Dann ist anscheinend in der main.php (englisch) ebenfalls ein Fehler vorhanden. In Zeile 15 steht

$lang['exif_WhiteBalance'] = "Whitebalance:";";

Ich glaube das die letzten Anführungszeichen und das Semikoln da nicht hingehören. Wenn die eingefügt sind, öffnet sich die Seite nicht mehr, wenn ich die rausnehme wird die Seite wieder angezeigt.

Fragende Grüße von der Ostsee - zumindest für diese Wochenende wünscht

Michael
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on May 14, 2011, 08:08:33 PM
...
Ich glaube das die letzten Anführungszeichen und das Semikoln da nicht hingehören. ...
wo du recht hast du recht :)

zum code erstellen/editieren und auch hochladen (alles in einem) verwende ich notepad++

EDIT: wenn du ganze files hochladest sollte filezila sicher funktionieren, aber du siehst ja selber das die modifikationen an sich nichts dafür können,
erst wenn du eine datei bearbeitest und sie wieder hochladest kommen die fehler.
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: mmarschner on May 14, 2011, 08:56:35 PM
Hallo Andi,

danke für die Info. Aber nach dem Erstellen der Exif Daten kommt in der Galerie im Header folgende Meldung ?

An unexpected error occured. Please try again later.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/motoly.de/httpdocs/gallerie/includes/db_mysql.php on line 116

Es werden in der Galerie auch keine Bilder mehr angezeigt.


Nach der Erstellen der Exif Daten ist jedoch folgende Meldung gekommen:

Volltext-Indizierung zwischen ID 0 und 3:
Processing image Die Teilnehmermotorräder, ID 2... ... EXIF UPDATE
Processing image Der böse Blick, ID 3... ... EXIF UPDATE


EXIF Daten erstellt!

[Zurück]  

Michael


Anscheinend habe ich den Fehler gefunden. Es fehlte in der Datenbank ein Feld - image_LensType in der Tabelle images. Habe das Feld angelegt, und es klappt. Was mich interessieren würde, ist, ob das Feld auch in den anderen Tabellen zugefügt werden muss.

Michael
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on May 14, 2011, 10:22:37 PM
sorry, ich hatte vergessen das aus dem code zu löschen, du hättest die betreffende zeile nur aus der config.php zu löschen brauchen.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: mmarschner on May 14, 2011, 10:30:13 PM
Kein Problem.

Noch eine letzte Frage - hoffe ich - zu dem Thema. Werden die EXIF Daten nur manuell oder automatisch eingelesen? Habe ein Bild hochgeladen, und EXIF Daten wurden erst nach manueller Ausführung des Scripts im Adminpanel angezeigt.

Michael
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on May 14, 2011, 10:37:45 PM
die werden automatisch ausgelesen, wenn du dann von der detailseite auf bild edieren gehst stehen die daten dann auch drinnen.
wenn du über das member uploadformular bilder hochladest, mußt du natürlich auch den zweiten teil des mods installieren.
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: xeta on June 23, 2011, 01:48:19 PM
Das freut mich, dass es diesen Mod für 1.7.10 gibt.

Ich habe noch http://www.4homepages.de/forum/index.php?topic=19926.0 (Google-Maps / GPS Integration V1.2) installiert, aber der funktioniert mit 1.7.9 bzw 1.7.10 nicht mehr so richtig, deswegen verwende ich noch immer viel ältere functions.php und checkimages.php.

Wenn ich mal genug Zeit habe werde ich diesen Mod mal neu implementieren.
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: xeta on June 24, 2011, 04:27:58 PM
sorry, ich hatte vergessen das aus dem code zu löschen, du hättest die betreffende zeile nur aus der config.php zu löschen brauchen.

mfg Andi

aus der db_field_definitions.php muss auch noch folgende Zeile gelöscht werden
$additional_image_fields['image_LensType'] = array($lang['exif_LensType'], "text", 0);
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: nobby on June 24, 2011, 05:27:57 PM
Hallo @Rembrandt,

vielleicht kannst Du dir mit Jan, Kai und Nicky ja mal einig werden,
das dieses MOD ein fester Bestandteil von 4images in der nächsten
Release wird. Das wäre schon sehr schön  :wink:

Ich habe nämlich keine Lust jedesmal nach einem neuen Release
irgendwelche Mods wieder neu einzubauen.

nobby
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Caladan on August 28, 2011, 05:29:30 PM
Mod in 1.7.10 erfolgreich implementiert und getestet - funktioniert tadellos. Vielen Dank für dieses schöne Stück Code!

Aber: die Datenbanksicherung mit 4images-Bordmitteln schlägt mit Error 500 fehl - "schuld" ist die Table (prefix)_wordmatch. Dies ist eine der Tables, die durch das Mod ziemlich heftig erweitert wird. In der selben Datenbank befinden sich (unter anderem Prefix) die Tables einer weiteren, nicht modifizierten 4images-Instanz (ebenfalls 1.7.10). Deren Tables werden problemlos von 4images gesichert.

Der Hoster ist der für 500-er Fehler allseits bekannte 1&1. Ich habe mir erst einmal mit einer DB-Sicherung über phpmyadmin beholfen. Da es sich aber um die Fotodatenbank meiner Perle handelt (und die nicht unbedingt Lust hat, den phpmyadmin extra zu bemühen), suche ich natürlich nach einer Problemlösung.

Gibt es ein Workaround für backup.php, um auch zeitkritische Server zufrieden zu stellen? Kann zwar php-Sourcecode lesen und ungefähr nachvollziehen, was passiert, bin aber nicht unbedingt eine Leuchte im selber-programmieren.

Vielen Dank für eure Mühe,

Caladan
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on August 28, 2011, 05:57:09 PM
Willkommen im Forum!

...Aber: die Datenbanksicherung mit 4images-Bordmitteln schlägt mit Error 500 fehl - "schuld" ist die Table (prefix)_wordmatch. Dies ist eine der Tables, die durch das Mod ziemlich heftig erweitert wird. In der selben Datenbank befinden sich (unter anderem Prefix) .....
bei der Datenbanksicherung ganz einfach die wordmatch und wordlist tabelle abwählen, es ist absolut nicht notwendig diese beiden tabellen mit zu sichern.
die beiden tabellen kannst du im fall des falles ganz einfach mit der rebuild_searchindex wieder befüllen.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Caladan on August 28, 2011, 07:30:10 PM
bei der Datenbanksicherung ganz einfach die wordmatch und wordlist tabelle abwählen, es ist absolut nicht notwendig diese beiden tabellen mit zu sichern.
die beiden tabellen kannst du im fall des falles ganz einfach mit der rebuild_searchindex wieder befüllen.

Erst mal vielen Dank für die schnelle Antwort. Und: Du hast ja überhaupt recht...

In Abwandlung Deines Rates werde ich meiner Perle aber sagen, dass sie vor Datenbanksicherungen einfach händisch den Index löscht. Grund: dann ist das "CREATE TABLE <prefix>_wordmatch" inklusive Feldstruktur mit im Backup enthalten. Die Tabelle ist dann zwar leer, aber immerhin sofort benutzbar...

Dank & Gruss
Cal
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on August 28, 2011, 08:26:21 PM
...Die Tabelle ist dann zwar leer, aber immerhin sofort benutzbar...
..
sehr gute idee  :)
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 11, 2011, 02:31:06 PM
Für V1.7.10 oder höher. .....
1.)  speichert die datei "install_exif.php" aus dem anhang in euren root ab, und ruft sie auf.
Hallo Andi,

da ich hoffe, auf diese Weise das Bild-Aufnahmedatum als Sortier-Kriterium nutzen zu können, habe ich mal mit der Installierung dieses mods begonnen.
Leider bekomme ich aber bereits bei Aufruf der install_exif.php folgende Fehlermeldung:

"An unexpected error occured. Please try again later. - Der Zugriff auf das angeforderte Objekt ist nicht möglich. Entweder kann es vom Server nicht gelesen werden oder es ist zugriffsgeschützt."

Allerdings wird das 4images-Installer-Fenster ganz korrekt angezeigt, mit allen Infos aus der global.php.
Ich kann auch vollkommen problemlos mit phpmyadmin auf die Datenbank meines offline-Server (xampp), also auch auf die enzelnen 4images-Tabellen zugreifen.
Auch über das ACP habe ich vollen Zugriff auf die Datenbank-Informationen (z.B. Bilder bearbeiten etc.).

Was könnte der Grund sein, daß die install_exif.php nicht ausgeführt wird?
Ein Passwort ist nicht eingerichtet.
Wird beim Ausführen möglicherweise der Benutzername (hier "root") nicht erkannt? Der steht aber ebenfalls korrekt in der global.php.

Ich hoffe, ich gehe Dir mit meinen laienhaften Fragen nicht zu sehr auf den Wecker...

Frdl. Grüße

Gerd




Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 11, 2011, 05:54:26 PM
 
...da ich hoffe, auf diese Weise das Bild-Aufnahmedatum als Sortier-Kriterium nutzen zu können, habe ich mal mit der Installierung dieses mods begonnen.
an sich können das die beiden Mods (Exif u. IPTC) nicht, ausser temporär über die suche.
aber damit man die sortierung im` CP/Bilder sortieren nach  ...` z.b. nach exif_datum umsetzen kann, müßen die Exif daten erst mal in die DB, und dazu ist der mod ja gut.
für die eigentliche sortierung nach beliebigen exif_daten werde ich noch ein addon erstellen und hier im forum posten. :)

.. Leider bekomme ich aber bereits bei Aufruf der install_exif.php folgende Fehlermeldung:

4b]An unexpected error occured. Please try again later. - Der Zugriff auf das angeforderte Objekt ist nicht möglich. Entweder kann es vom Server nicht gelesen werden oder es ist zugriffsgeschützt.[/b]"
...Allerdings wird das` images-Installer-Fenster ganz korrekt angezeigt, mit allen Infos aus der global.php.
.... Der steht aber ebenfalls korrekt in der global.php......
du meinst in der config.php nicht global.php?
abgesehen davon kannst du die tabellen auch über PHPAdmin anlegen.


ALTER TABLE `4images_images` ADD `4Image_Make` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_Model` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_DateTimeOriginal` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_ISOSpeedRatings` VARCHAR( 20 ) NOT NULL;   
ALTER TABLE `4images_images` ADD `4Image_ExposureTime` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_FNumber` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_FocalLength` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_ExposureBiasValue` VARCHAR( 20 ) NOT NULL;   
ALTER TABLE `4images_images` ADD `4Image_ApertureValue` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_MaxApertureValue` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_MeteringMode` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_Flash` VARCHAR( 100 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_ExposureProgram` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_ExposureMode` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_WhiteBalance` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_GPSLatitude` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_GPSLatitudeRef` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_GPSLongitude` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_GPSLongitudeRef` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images` ADD `4Image_GPSAltitude` VARCHAR( 20 ) NOT NULL;
ALTER TABLE `4images_images` ADD `4Image_GPSTrack` VARCHAR( 20 ) NOT NULL;

ALTER TABLE `4images_images_temp` ADD `4Image_Make` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_Model` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_DateTimeOriginal` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_ISOSpeedRatings` VARCHAR( 20 ) NOT NULL;   
ALTER TABLE `4images_images_temp` ADD `4Image_ExposureTime` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_FNumber` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_FocalLength` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_ExposureBiasValue` VARCHAR( 20 ) NOT NULL;   
ALTER TABLE `4images_images_temp` ADD `4Image_ApertureValue` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_MaxApertureValue` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_MeteringMode` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_Flash` VARCHAR( 100 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_ExposureProgram` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_ExposureMode` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_WhiteBalance` VARCHAR( 50 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_GPSLatitude` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_GPSLatitudeRef` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_GPSLongitude` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_GPSLongitudeRef` VARCHAR( 20 ) NOT NULL; 
ALTER TABLE `4images_images_temp` ADD `4Image_GPSAltitude` VARCHAR( 20 ) NOT NULL;
ALTER TABLE `4images_images_temp` ADD `4Image_GPSTrack` VARCHAR( 20 ) NOT NULL;

ALTER TABLE `4images_wordmatch` ADD `Make_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `Model_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `DateTimeOriginal_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `4ISOSpeedRatings_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `ExposureTime_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `FNumber_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `FocalLength_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `ExposureBiasValue_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `ApertureValue_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `MaxApertureValue_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `MeteringMode_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `Flash_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `ExposureProgram_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `ExposureMode_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `WhiteBalance_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `GPSLatitude_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `GPSLatitudeRef_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `GPSLongitude_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `GPSLongitudeRef_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `GPSAltitude_match` TINYINT(1) DEFAULT '0' NOT NULL;
ALTER TABLE `4images_wordmatch` ADD `GPSTrack_match` TINYINT(1) DEFAULT '0' NOT NULL;


mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 11, 2011, 08:03:57 PM
an sich können das die beiden Mods (Exif u. IPTC) nicht, ausser temporär über die suche.
aber damit man die sortierung im` CP/Bilder sortieren nach  ...` z.b. nach exif_datum umsetzen kann, müßen die Exif daten erst mal in die DB, und dazu ist der mod ja gut.
Hallo Andi,

vielen Dank für die ausführliche Antwort.

Zunächst: Die Ursache für die Fehlfunktion mit install_exif.php ist die xampp-Version 1.7.3. Habe im Internet entsprechende Hinweise darauf gefunden, daß diese Fehlermeldung auch bei anderen Anwendungen unter xamp 1.7.3 auftritt und mich dann spontan entschlossen, doch direkt online zu installieren. Das klappte dann dank Deiner sehr gut dokumentierten Anleitung problemlos.

Da die EXIF-Daten ja nun griffbereit in der Datenbank liegen, habe ich mich mal ein wenig tiefer in die Materie begeben und nachgeforscht, wo und wie in den unterschiedlichen php-Scripten gesucht wird und es mittlerweile tatsächlich geschafft, die Sortier-Option "Aufnahmedatum" in die Suchmaske der "Einstellungen"-Seite zu bringen - und es klappt sogar...!

In der EXIF-Datenbank vermisse ich noch die 35mm-Film-Brennweite. Um die zusätzlichen Felder anzulegen, habe ich einfach Deine install_exif.php "mißbraucht", auf jeweils eine Zeile für "FocalLengthIn35mmFilm" reduziert und nochmal aufgerufen. Auch das klappte einwandfrei. Hängt jetzt zwar am Ende der Tabelle, aber das hat hoffentlich auf die Reihenfolge der Darstellung keinen negativen Einfluß.

Jetzt bin ich eifrig dabei, überall da, wo die "normale" Brennweite in den Scripten vorkommt, einen adäquaten Eintrag für die 35mm-Film-Brennweite einzufügen. Mit Copy/Paste und ein paar manuellen Änderungen komme ich ganz gut voran. Irgendwie werde ich das vielleicht auch hinbekommen. Wenn ich nichts übersehe, müßte es eigentlich irgendwie klappen. Zur Not muß ich einfach mal die Inhalte der übrigen Scripte gezielt durchsuchen, ob ich auch in anderen Scripten noch was ergänzen muß.

Ich werde über einen weiteren Erfolg, aber auch über eine Bauchlandung noch berichten. Ist eigentlich wie beim erstenmal Selbst-Tapezieren... Sollte es am Ende wirklich funktionieren, stelle ich einfach mal meine Ergänzungen hier ein.

Frdl. Grüße

Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 11, 2011, 08:22:57 PM
...
Zunächst: Die Ursache für die Fehlfunktion mit install_exif.php ist die xampp-Version 1.7.3. Habe im Internet entsprechende Hinweise darauf gefunden, daß diese Fehlermeldung auch bei anderen Anwendungen unter xamp 1.7.3 auftritt und mich dann spontan entschlossen, doch direkt online zu installieren. Das klappte dann dank Deiner sehr gut dokumentierten Anleitung problemlos.
aha das wußte ich auch nicht das es damit probleme gibt..

... habe ich mich mal ein wenig tiefer in die Materie begeben und nachgeforscht, wo und wie in den unterschiedlichen php-Scripten gesucht wird und es mittlerweile tatsächlich geschafft, die Sortier-Option "Aufnahmedatum" in die Suchmaske der "Einstellungen"-Seite zu bringen - und es klappt sogar...!
ahh.. endlich mal jemand der sich dafür interessiert und selber die initative ergreift, wenn du mal ein par mods eingebaut hast wirst du dich schon etwas besser in der 4i umgebung (php) zurechtfinden, nur weiter so.  :thumbup:

In der EXIF-Datenbank vermisse ich noch die 35mm-Film-Brennweite. Um die zusätzlichen Felder anzulegen, habe ich einfach Deine install_exif.php "mißbraucht", auf jeweils eine Zeile für "FocalLengthIn35mmFilm" reduziert und nochmal aufgerufen. Auch das klappte einwandfrei. Hängt jetzt zwar am Ende der Tabelle, aber das hat hoffentlich auf die Reihenfolge der Darstellung keinen negativen Einfluß.
nein das hat keine auswirkungen, eigentlich gibt es ja in der EXIF funktion eine eigene für "FocalLengthIn35mmFilm" aber die habe ich dann letztendlich nicht eingebaut das die meisten Kameras das nicht unterstützen.

..... Ist eigentlich wie beim erstenmal Selbst-Tapezieren...
hehe.. ja das erste mal ist am schwersten, also drann bleiben und noch viel spass damit.

zu deiner vorherigen frage, nein du nervst nicht mit deinen fragen dazu ist ja ein forum da.  :)

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 12, 2011, 09:13:29 PM
... eigentlich gibt es ja in der EXIF funktion eine eigene für "FocalLengthIn35mmFilm" aber die habe ich dann letztendlich nicht eingebaut das die meisten Kameras das nicht unterstützen.

Hallo Andi,

die Speicherung und Anzeige des 35-mm-Vergleichswertes "FocalLengthIn35mmFilm" konnte ich inzwischen komplett einbinden. Ich bastel noch an einer Möglichkeit, diesen bei meiner älteren Sony DSC-P100 fehlenden Wert im Script selbst zu generieren. Der Multiplikator 7.9 ist bekannt. Theoretisch sollte es also kein Problem sein. Aber ich muß erst mal ausprobieren, wie ich zwischen einzelnen Kamera-Modellen unterscheiden kann. Dann könnte man das doch sicher irgendwie mit IF / ELSEIF lösen...

Die Sortierfunktion nach dem Aufnahmedatum mußte ich nochmal nachbessern. Nach Eingabe weiterer Testbilder stellte ich fest, daß das Sortier-Ergebnis noch nicht korrekt war. Ich habe nun in "funktions.php" das Datum/Zeit-Format vor dem Abspeichern in die Datenbank in JJJJ-MM-TT hh:mm:ss umgewandelt. Jetzt läuft die Sortierung absolut korrekt. Beim Datum-Format wird im Moment noch statt der erwünschten "-" aber ein Doppelpunkt angezeigt. Liegt eindeutig daran, daß ich mit dem äußerst schlecht dokumentierten preg_replace nicht zurechtkomme. Seltsam ist, daß das Ergebnis offline (direkt als Test-php-Script im Browser ausgeführt) korrekt mit "-" angezeigt wird, online innerhalb 4images aber mit ":".

Beste Grüße und angenehmen Sonntag

Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 13, 2011, 09:37:57 AM
Hi!
....die Speicherung und Anzeige des 35-mm-Vergleichswertes "FocalLengthIn35mmFilm" konnte ich inzwischen komplett einbinden. Ich bastel noch an einer Möglichkeit, diesen bei meiner älteren Sony DSC-P100 fehlenden Wert im Script selbst zu generieren. ...
ich habe mal die Exif funktion um das 35mm Äquivalent erweitert, das problem ist ja wie du schon erkannt hast das einige Kameramodelle die äquivalente Brennweite nicht in die Exif Daten (FocalLengthIn35mmFilm) abspeichern.
Ich habe das so umgangen das ich das Sensorformat auslese (FocalPlaneXResolution und FocalPlaneYResolution), die beiden werte sind in den Exif Standards enthalten und sind nicht Herstellerspezifisch daher sollte eigentlich eine jeden Kamera diese in die Exifdaten abspeichern.

Grundlagen ist das Kleinbildformat 36mm x 24mm die Diagonale = 43.2666153056 mm, das heißt:

 - das Sensorformat auslesen (FocalPlaneXResolution und FocalPlaneYResolution) allen angaben in den Exif sind in Inch,
 - die Diagonale berechnen,
 - Kleinbilddiagonale : Berechnete Diagonale = Factor
 - Brennweite laut EXIF ('FocalLength') mit dem Factor Multipizieren ergibt die die äquivalente Brennweite.
 - Äquivalente Brennweite noch auf 0 nach kommastellen Runden.
 - Ergebniss nach 'mm' umwandeln und Runden

so zum php teil, alle änderungen in php beziehen sich auf diese Modifikation:

1.) die Datenbank um 3 Feld erweitern:
Code: [Select]
ALTER TABLE `4images_images` ADD `image_FocalLengthIn35mmFilm` VARCHAR( 20 ) NOT NULL;
Code: [Select]
ALTER TABLE `4images_images_temp` ADD `image_FocalLengthIn35mmFilm` VARCHAR( 20 ) NOT NULL;
Code: [Select]
ALTER TABLE `4images_wordmatch` ADD `FocalLengthIn35mmFilm_match` TINYINT(1)  NOT NULL DEFAULT '0';
2.) suche in step.3):
$additional_image_fields['image_FocalLength'] = array($lang['exif_FocalLength'], "text", 0);

füge darunter ein:
$additional_image_fields['image_FocalLengthIn35mmFilm'] = array($lang['exif_FocalLengthIn35mmFilm'], "text", 0);

3.) suche in step 4.):
$exif_match['GPSTrack'] = "GPSTrack";

füge darunter ein:

  $exif_match['FocalLengthIn35mmFilm'] = "FocalLengthIn35mmFilm";
  $exif_match['FocalPlaneXResolution'] = "FocalPlaneXResolution";
  $exif_match['FocalPlaneYResolution'] = "FocalPlaneYResolution";


4.) suche in step 4.):

if ($key == "DateTimeOriginal") {

ersetze es mit:

        if($key == "Model") {
            $model = explode("/", $exif_info);
          $exif_array[$exif_match['Model']] = $model[0];
        }
        elseif ($key == "DateTimeOriginal") {

suche

           $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])) . " mm";
        }

ersetze es mit:

          $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])) . " mm";
          $FocalLength = round(($FocalLength[0] / $FocalLength[1]));
        }      
        elseif($key == "FocalPlaneXResolution") {
          $FocalPlaneXResolution = explode("/", $exif_info);
        }
        elseif ($key == "FocalPlaneYResolution") {
          $FocalPlaneYResolution = explode("/", $exif_info);
          $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength*(43.2666153056/((sqrt((pow($FocalPlaneXResolution[1],2))+(pow($FocalPlaneYResolution[1],2))))*.0254)))." mm";
        }
        elseif($key == "FocalLengthIn35mmFilm") {
          $FocalLengthIn35mmFilm = explode("/", $exif_info);
          $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round(($FocalLengthIn35mmFilm[0]))." mm ";
        }

suche:

          $exif_array[$exif_match[$key]] = $exif_info;
        }
      }
    }

füge darunter ein:

    if(!isset($FocalLengthIn35mmFilm) && !isset($FocalPlaneXResolution)){
      if(isset($model[0]) && isset($FocalLength)){
      
        switch($model[0]){
          case "DSC-P100" : $val = 7.9; break;  
          case "Pro 815" : $val = 3.89; break;
          case "NIKON D300S" : $val = 1.5; break;
        }
        
         if($val > 0){
           $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength * $val) ." mm";
        }
      }
    }


5.) suche in step 5.):

"image_GPSTrack" => "phrase",

füge darunter ein:

"image_FocalLengthIn35mmFilm" => "phrase",

suche:

"image_GPSTrack" => "GPSTrack_match",

füge darunter ein:

"image_FocalLengthIn35mmFilm" => "FocalLengthIn35mmFilm_match",


6.) suche in step 6.)

$lang['exif_FocalLength'] = "Brennweite (Objektiv):";

füge darunter ein:

$lang['exif_FocalLengthIn35mmFilm'] = "Brennweite 35mm Äquivalent:";


das ergebnis kannst du dir hier ansehen. (http://test.vienna-pictures.com/details.php?image_id=293)

so ich hoffe ich habe alles. :)

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 13, 2011, 04:49:45 PM
ich habe mal die Exif funktion um das 35mm Äquivalent erweitert, das problem ist ja wie du schon erkannt hast das einige Kameramodelle die äquivalente Brennweite nicht in die Exif Daten (FocalLengthIn35mmFilm) abspeichern.
Ich habe das so umgangen das ich das Sensorformat auslese (FocalPlaneXResolution und FocalPlaneYResolution), die beiden werte sind in den Exif Standards enthalten und sind nicht Herstellerspezifisch daher sollte eigentlich eine jeden Kamera diese in die Exifdaten abspeichern.
Hallo Andi,

dies läßt sich - zumindest bei meinen beiden Kameras - leider nicht realisieren. Die ziemlich neue Nikon D300s erzeugt zwar insgesamt 104 EXIF-Einträge, aber die beiden "FocalPlane..."-Werte sind nicht dokumentiert. Sie stellt jedenfalls den "FocalLengthIn35mmFilm"-Wert dar (anders als meine ältere Sony DSC-P100, die insgesamt lediglich 51 EXIF-Werte aufweist).

Ansonsten:
Bei den "FocalPlane..."-Werten gibt es offenbar keine Unterscheidung zwischen "Zoom" und "Digitalzoom", was natürlich die nach Deiner Formel errechneten 35-mm-Film-Werte entsprechend verfälschen würde.

Da aus den den o.g. EXIF-Tabellen leider der verwendete Sensor-Chip nicht erkennbar ist, bleibt für mich (bei einer einzigen Kamera ohne "FocalLengthIn35mmFilm"-Wert) zunächst nur die Möglichkeit, den Ausgabewert aus dem Eintrag "FocalLength" mit dem manuel einzufügenden Multiplikator in der funktions.php zu erzeugen. Soweit es sich - wie bei mir - nur um eine Kamera ohne "FocalLengthIn35mmFilm"-Werte handelt, muß ich auch nicht aufwendig das Kamera-Modell abfragen, wenn ich miit "IF..." dem positiven Wert meiner Nikon D300S (bzw. entsprechend anderen intelligenten Kameras) den Vortritt lasse und erst im "ELSEIF"-Fall den manuellen Wert erzeuge. Eine Kamera-Erkennung müßte ich also erst dann einbauen, wenn eine zweite ohne "FocalLengthIn35mmFilm"-Wert hinzu käme.

Alternativ könnte ich mir vorstellen, daß der 4images-User selbst solche Kameras in einer entsprechend zu ergänzenden Datenbank erfassen und dort auch den Multiplikator (oder ersatzweise die Auflösung) ablegen kann. Möglicherweise reicht sogar eine Übernahme der relativ wenigen Chip-Typen mit ihren Multiplikatoren in das php-Script. Nach meinen Informationen gibt es ja - inklusive "Vollbild" - nur 5 oder 6 verschiedene Multiplikatoren. - In beiden Fällen müßte dann das Plugin bei Fehlen der "FocalLengthIn35mmFilm"-Werte über ein entsprechendes Menü zur Auswahl des "passenden" Kamera- oder Chip-Typs auffordern.
___

Bei der Datum-Formatierung im Aufnahmedatum habe ich trotz umfangreicher Bastelei immer noch die ":", wo eigentlich "-" stehen sollten. Ich werde aber weiter tüfteln.

Frdl. Grüße

Gerd





Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 13, 2011, 05:00:48 PM
könntest du mir ein par bilder zukommen lassen wo das deiner meinung nach nicht enthalten ist?

Edit: habe mir gerade selber ein bild von der Nikon D300s heruntergeladen, funktioniert einwandfrei.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 13, 2011, 11:53:26 PM
könntest du mir ein par bilder zukommen lassen wo das deiner meinung nach nicht enthalten ist?
Edit: habe mir gerade selber ein bild von der Nikon D300s heruntergeladen, funktioniert einwandfrei.
Hallo,

habe eben nochmal einige EXIF-Daten durchgesehen. Um auszuschließen, daß ich vielleicht nicht alle Daten angezeigt bekomme, habe ich mir direkt "PhotoME" aus dem Internet geladen. Aber auch da finde ich sowohl zu Bildern der Nikon D300s als auch zur Sony DSC-P100 die "FocalPlane..."-Einträge nicht.

Zu "PhotoME" gehört u.a. ein Testbild von einer Nikon D80. Da sind alle Daten vollständig vorhanden. Zusätzlich habe ich eben noch Bilder der Samsung 815 Pro getestet. Auch dort finde ich die "FocalLine..."-Informationen. Offenbar sind die Hersteller-übergreifend immer unter den Tag-ID's A20E und A20F protokolliert. Sowohl bei der Nikon D80 als auch der bei Samsung 815 Pro hängt hinten am Tag-Name aber jeweils noch eine "2" dran.

Naja, bei den Bildern der Nikon D300s ist es ja kein Beinbruch, da die KB-Brennweite sowieso separat vorhanden ist. Und ich gehe davon aus, daß Du für solche Fälle sowieso zunächst auf bereits vorhandene Daten zugreifst bzw. bei Kameras, die überhaupt keine Informationen liefern, das Feld ganz leer läßt. So lange ich zu den den vorliegenden Nikon- und Sony-Bildern nicht sicher davon ausgehen kann, daß die gewünschten Werte korrekt erzeugt werden können, lasse ich es vorläufig bei meiner funktionierenden Version.

Ich werde Dir gleich noch jeweils ein Bild der o.g. Kameras zusenden.

Beste Grüße

Edit:
Anbei die angekündigten Bilder.


Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 14, 2011, 07:23:42 PM
hätte ich nicht gedacht das bei den sony das sensor format nicht mitgeliefert wird, klumpert...
bei den anderen funktioniert es einwandfrei, meinen code oben habe ich nochmal nachgebessert :)
kannst dir es eh ansehn über den link in meinen vorherigen post.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 14, 2011, 09:12:12 PM
hätte ich nicht gedacht das bei den sony das sensor format nicht mitgeliefert wird, klumpert...
bei den anderen funktioniert es einwandfrei, meinen code oben habe ich nochmal nachgebessert :)
kannst dir es eh ansehn über den link in meinen vorherigen post.
mfg Andi
Vielen Dank,

ja, das sieht ja hervorragend aus. Werde ich gleich noch testen..

Ich schätze, zu der Sony werden sich auch noch andere Modelle verschiedener Hersteller gesellen. Ich werde innerhalb des Verwandten- und Freundeskreises mal Testbilder einsammeln, um der Sache auf den Grund zu gehen.

In meiner eigenen Anwendung habe ich es zunächst nur mit den drei o.g. Kamera-Typen zu tun. Innerhalb Deiner aktualisierten Script-Zeilen müßte man nun noch innerhalb der "FocalLengthIn35mmFilm"-Abfrage für den Fall, daß sich aus der vorangehenden Berechnung sowie aus den EXIF-Daten selbst kein positiver Wert ergibt, als "letzte Rettung" die Möglichkeit nutzen, den Wert über eine Multiplikation des "FocalLength"-Wertes mit dem - manuell in das Script einzufügenden -  "Crop-Faktor" (bei der Sony DSC-P100 z.B. 4,8) zu erzeugen.

Eleganter wäre es, evtl. in "functions.php" eine Tabelle einfügen, in der die betroffenen "dummen" Kamera-Modelle mit ihrem Crop-Faktor stehen. Da zumindest bei der Sony das Kamera-Modell korrekt in EXIF benannt ist, könnte der Multiplikator dann automatisch aus dieser Tabelle entnommen werden. Die 4images-User könnten die Tabelle ihrer eigenen Galerie selbst ergänzen, sollten neue Daten aber auch z.B. an Dich weitergeben, damit sie in die nächsten Versionen aufgenommen werden können.

Außerdem wäre es dann sicher sehr hilfreich im Forum ein entsprechendes Thema einzurichten, um auch auf diesem Wege korrekte Modell-Bezeichnungen mit ihren Crop-Werten zu sammeln.

Nach gerade einer Woche mit anfangs skeptischem Hereinschnüffeln bin ich - auch dank Deiner Hilfe - inzwischen ein absoluter 4images-Fan !!!
___

Edit (15.11.2011, 16.20 Uhr):

So, nachdem ich aus Deinen letzten Ergänzungen endlich erkannt habe, daß man die aus EXIF auszulesenden Werte wohl mehrfach korrigieren kann, bevor sie in die Datenbank geschrieben werden, habe ich es einfach mal mit folgender Zeile mit dem Crop-Faktor der Sony DSC-P100 versucht. Andere User können brauchen diesen Wert nur passend zu Ihrem Kamera-Modell ändern. Auf diese Weise kann man natürlich nur Werte für eine Kamera berechnen, bzw. für verschiedene Kameras mit identischem Crop-Faktor.

Diese habe ich in Deiner obigen MOD-Ergänzung wie folgt (rot gekennzeichnet) eingefügt:

4.) suche in step 4.): = includes/functions.php

                $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1])1) . " mm";
        }

ersetze es mit:

                $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1]) 1 ) . " mm";
                $FocalLength = $exif_array[$exif_match[$key]];
               $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round(($FocalLength * 4.8 )) . " mm";

(Den Wert "FocalLength" haben ich zuvor auf eine Stelle gerundet, damit bei zwei aufeinander folgenden Rundungen nicht zu große Abweichungen entstehen.)

Das klappt einwandfrei. Und ich habe auch den Eindruck, daß dies keine anderen Werte durcheinander bringt. Bei anderen Kamera-Modellen mit detaillierteren EXIF-Infos wird der mit obiger Zeile erzeugte Wert ja in den nachfolgenden Zeilen ersetzt. Möglicherweise findest Du als Fachmann aber noch ein "Haar in der Suppe".

mfg
Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 17, 2011, 12:53:22 PM
Hallo Andi,

es gibt offensichtlich größere Probleme beim wiederholten Ausführen von Create EXIF DATA. In allen nachfolgend beschriebenen Fällen habe ich den Index vorher geleert.

1.
Die EXIF-Daten werden nicht - wie von Dir beschrieben - direkt beim Upload, sondern erst bei Aufruf von Create EXIF DATA ausgelesen und in die Datenbank geschrieben. Direkt nach dem Upload erscheinen also zum jeweiligen Bild lediglich die allgemeinen Bild-Informationen ohne EXIF. Hängt das evtl. damit zusammen, daß ich die darzustellenden Bilder und Thumbnails bereits im endgültigen Format uploade, also den Resizer und Thumbnailer nicht aktiviere...?

2.
Wiederhole ich nach einem einmaligen EXIF-Durchlauf diesen für ein einziges Bild, wird Create EXIF DATA vollkommen einwandfrei ausgeführt. Das funktioniert sowohl mit einem einzigen Bild in der Datenbank als auch mit dem jeweils zuletzt geladenen Bild (also der höchsten ID).

3.
Sobald beim wiederholten Ausführen von Create EXIF DATA allerdings mehrere Bilder betroffen sind, treten Datenbank-Fehler auf, die ich Dir unten mal reinkopiert habe. Interessant ist, daß das jeweils erste Bild korrekt abgearbeitet wird, also nur die Folgebilder diesen ERROR auslösen (siehe unten).

4.
Hast Du einen Tipp, wie ich diesen Fehler verhindern bzw. umgehen kann?
Ich denke, wenn man in der Eingabe-Maske von Create EXIF DATA nicht nur den "von"-Wert eingeben, sondern das Einlesen und Speichern gezielt auf ein einziges Bild innerhalb des vorhandenen ID-Bereichs beschränken könnte, würde der beschriebene Fehler nicht auftreten.

_________________________________________________

Fehlermeldungen
_________________________________________________

Volltext-Indizierung zwischen ID 0 und 7:

Processing image Testbild_01, ID 5... ... EXIF UPDATE
Processing image Testbild_02, ID 6... ... EXIF UPDATE

DB Error: Bad SQL Query: REPLACE INTO 4images_wordmatch (image_id, word_id, name_match, desc_match, keys_match, Make_match, Model_match, DateTimeOriginal_match, ISOSpeedRatings_match, ExposureTime_match, FNumber_match, FocalLength_match, FocalLengthIn35mmFilm_match, ExposureBiasValue_match, ApertureValue_match, MaxApertureValue_match, MeteringMode_match, Flash_match, ExposureProgram_match, ExposureMode_match, WhiteBalance_match, GPSLatitude_match, GPSLatitudeRef_match, GPSLongitude_match, GPSLongitudeRef_match, GPSAltitude_match, GPSTrack_match) VALUES (6, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 6, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), (6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
Column count doesn't match value count at row 1
Processing image Testbild_03, ID 7... ... EXIF UPDATE

DB Error: Bad SQL Query: REPLACE INTO 4images_wordmatch (image_id, word_id, name_match, desc_match, keys_match, Make_match, Model_match, DateTimeOriginal_match, ISOSpeedRatings_match, ExposureTime_match, FNumber_match, FocalLength_match, FocalLengthIn35mmFilm_match, ExposureBiasValue_match, ApertureValue_match, MaxApertureValue_match, MeteringMode_match, Flash_match, ExposureProgram_match, ExposureMode_match, WhiteBalance_match, GPSLatitude_match, GPSLatitudeRef_match, GPSLongitude_match, GPSLongitudeRef_match, GPSAltitude_match, GPSTrack_match) VALUES (7, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0), (7, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
Column count doesn't match value count at row 1

EXIF Daten erstellt!
_________________________________________________

Volltext-Indizierung zwischen ID 6 und 7:

Processing image Testbild_01, ID 6... ... EXIF UPDATE
Processing image Testbild_02, ID 7... ... EXIF UPDATE

DB Error: Bad SQL Query: REPLACE INTO 4images_wordmatch (image_id, word_id, name_match, desc_match, keys_match, Make_match, Model_match, DateTimeOriginal_match, ISOSpeedRatings_match, ExposureTime_match, FNumber_match, FocalLength_match, FocalLengthIn35mmFilm_match, ExposureBiasValue_match, ApertureValue_match, MaxApertureValue_match, MeteringMode_match, Flash_match, ExposureProgram_match, ExposureMode_match, WhiteBalance_match, GPSLatitude_match, GPSLatitudeRef_match, GPSLongitude_match, GPSLongitudeRef_match, GPSAltitude_match, GPSTrack_match) VALUES (7, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0), (7, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0), (7, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0)
Column count doesn't match value count at row 1

EXIF Daten erstellt!
_________________________________________________

Volltext-Indizierung zwischen ID 7 und 7 (Einzelbild, also keine Fehler-, sondern nur Statusmeldung):

Processing image Testbild_03, ID 7... ... EXIF UPDATE

EXIF Daten erstellt!
_________________________________________________


mfg
Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 18, 2011, 03:29:22 PM
Hallo Andi,

die Berechnung der äquivalenten KB-Brennweite für verschiedene Kamera-Modelle habe ich in "functions.php" nun wie folgt gelöst und zunächst den drei angegebenen Typen (Sony, Nikon, Samsung) getestet. Dabei habe ich bei der Samsung 815 Pro und der Nikon vorübergehend das Auslesen der vorhandenen "FocalLengthIn35mmFilm"-Werte deaktiviert. Weitere Kamera-Typen können vom User jederzeit mit ihren Crop-Werten eingefügt werden. Falls in meinen Zeilen noch etwas fachmännisches "Feintuning" möglich oder erforderlich ist, bitte ich um einen entsprechenden Hinweis.
___


 elseif ($key == "FocalLength") {
            $FocalLength = explode("/", $exif_info);
            $exif_array[$exif_match[$key]] = round(($FocalLength[0] / $FocalLength[1]),1) . " mm";

// ------------------------------------------------------------------------------------------------------------
//   Berechnung Brennweite 35-mm-Film aus Objektiv-Brennweite    
//   für Kameras, die den EXIF-Wert "FocalLengthIn35mmFilm" nicht darstellen.        
//   Zeilen für zusätzliche Kamera-Modelle einfügen:                    
//   - genaue Schreibweise des Modells aus ACP "Bild bearbeiten" übernehmen        
//   - Crop-Faktor der Kamera steht meist in der Bedienungsanleitung    
//   - ansonsten Crop-Faktor aus der angegebenen Vergleichs-Brennweite berechnen
// ------------------------------------------------------------------------------------------------------------

            $FocalLength = $exif_array[$exif_match[$key]];
            $kameratyp = $exif_match['Model'];

               $CropFaktor = 1;
               if ($kameratyp = "DSC-P100") {$CropFaktor = 4.786; }
               if ($kameratyp = "NIKON D300S") {$CropFaktor = 1.5; }
               if ($kameratyp = "Pro 815") {$CropFaktor = 3.89; }
                   $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round(($FocalLength * $CropFaktor),0) . " mm";
         }

// ------------------------------------------------------------------------------------------------------------
//   Einfügung Brennweite 35 mm-Film aus vorhandenem EXIF-Eintrag
//   ein evtl. per Crop-Faktor berechneter Wert wird überschrieben    
// ------------------------------------------------------------------------------------------------------------

        elseif ($key == "FocalLengthIn35mmFilm") {
            $FocalLengthIn35mmFilm = explode("/", $exif_info);
            $exif_array[$exif_match[$key]] = round(($FocalLengthIn35mmFilm[0]),0) . " mm";
        }
...

mfg

Gerd

php Tags eingefügt @Rembrandt

Edit 19.11.2011 Von Gerd:

Tut mir sehr leid. Theoretisch scheint alles zu stimmen, aber in der Praxis funktioniert meine laienhafte Lösung offenbar nicht. Das Problem, das ich bisher nicht lösen konnte, liegt bei der Übernahme des Kamera-Typs. Irgendwie war ich doch wohl zu optimistisch.
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 20, 2011, 09:14:56 AM
Hi!

so ich habe meinen Code oben geändert http://www.4homepages.de/forum/index.php?topic=29519.msg159818#msg159818

in den Datenbank felder hatte ich leider einen Fehler (step 1.)), die Feldnamen stimmten nicht.
Kontrolliere das jetzt bei die noch einmal nach und ändere gegebenen falls die Feldnamen, sorry.

unten in step 4.) habe ich jetzt eine neue Funktion eingefügt, dort wird jetzt wenn keine "xy auflösung" oder "FocalLengthIn35mmFilm" in den exif vorhanden sind die 35mm Äquivalente Brennweite berechnet,
 sofern in den Exifs das "Model" vorhanden ist.
dort kannst du jetzt weitere "Model" Namen einfügen.
die beiden werte:

          case "Pro 815" : $val = 3.89; break;
          case "NIKON D300S" : $val = 1.5; break;

sind nicht notwendig, die werden sowieso aus der "xy auflösung" oder "FocalLengthIn35mmFilm" ermittelt, ich habe sie nur eingefügt damit du siehst wie der Code weiter fortgesetzt wird damit du weitere Kamera Modele einfügen kannst.

zu deine vorherigen Problem mit der Fehlermeldung, kontrolliere nochmal mal deine Datenbankfelder (wordmatch) und die config.php (step.5).

und noch etwas, wenn du php Code hier postet verwende bitte den BBCode Tag "php", damit bleibt das etwas über sichtlicher.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on November 20, 2011, 04:37:33 PM
Hallo Andi,

herzlichen Dank für die Lösung. Es freut mich, daß ich - wenn auch nur im Ansatz - schon auf dem richtigen Weg war. Aber ohne Deine Hilfe hätte ich das nicht realisieren können.

Sofern de erforderlichen EXIF-Dateien fehlen und für eine solche Kamera manuell kein Crop-Faktor eingetragen wird, erzeugt diese Routine einen Datenbank-Eintrag und eine Ausgabe von "0 mm". Dies ließ sich aber sehr leicht wie folgt beheben:

Suchen in /plugins/functions.php nach:
           $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength * $val) ." mm";

Ersetzen durch:
        if($val > 0){
           $exif_array[$exif_match['FocalLengthIn35mmFilm']] = round($FocalLength * $val) ." mm";
        }


Nachdem ich die entsprechenden Ursprungs-Scripte noch einmal erneut mit den MOD-Inhalten ergänzt habe, wird nun auch kein ERROR mehr angezeigt.

Hier mal die URL zu der Galerie-Seite, die ich für meinen Sohn eingerichtet habe:
www.thomas-gehle.de (http://www.thomas-gehle.de)

Servus

Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on November 20, 2011, 05:02:34 PM
Danke für den Hinweis, ich habe es im code oben eingefügt.

eine Bitte kannst du deinen Wunschzettel ausgliedern und vielleicht hier drann hängen:
 http://www.4homepages.de/forum/index.php?topic=21850.0

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: dingsibumzi on December 11, 2011, 10:17:56 PM
Hallo ;)
Dieser Script klappt nun wunderbar, alles perfekt eig ;D

Allerdings habe ich den Multi Upload Script installiert, was muss ich denn Editieren damit die Daten auch bei diesem Automatisch ausgelesen und eingefügt werden?
Bisher klappt das nur bei der normalen Upload Funktion...

Mfg
Joey
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on January 03, 2012, 11:40:00 AM
Hallo,

zur Darstellung der kompletten GPS-Informationen aus den EXIF-Daten ist eine Korrektur erforderlich.

Die jeweiligen Scripte sowie die Datenbank-Tabellen enthalten bisher bezüglich der "GPS-Blickrichtung" Feldnamen mit der Bezeichnung:

"GPSTrack"

Dieses Format entspricht leider nicht dem internationalen Standard. Darum werden die GPS-Informationen bezüglich der Blickrichtung vom Programm nicht ausgelesen, gespeichert und angezeigt.

Lösung:

In den Scripten

config.php
functions.php
main.php
install_exif.php
db_field_definitions.php

nach den Einträgen "GPSTrack" suchen und diese durch "GPSImgDirection" ersetzen.

Bei bereits bestehenden Datenbank-Tabellen sind zusätzlich die entsprechenden Feldnamen zu ändern.

in IMAGES_TABLE und IMAGES_TEMP_TABLE:
image_GPSTrack in image_GPSImgDirection

in WORDMATCH_TABLE:
GPSTrack_match in GPSImgDirection_match

Danach wird - sofern die Kamera komplette GPS-Daten gespeichert hat - auch die Blickrichtung (in °)  korrekt am Screen angezeigt.
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on January 03, 2012, 05:04:08 PM
....Dieses Format entspricht leider nicht dem internationalen Standard......
Danke für den Hinweis, als wir /ich die Felder für die GPs Infos seinerzeit festgelegt haben war das quasi nicht relevant da es sowieso keine Kameras gab die diese Funktion unterstützten.
Deshalb wurde es auch nie überprüft ob es richtig ist oder nicht.

Zu dem "internationalen Standard", das stimmt so nicht ganz da "GPSTrack" sehr wohl ein GPS_TAGS(Exif) -Tag ist, der aber den Track (Spur) beinhaltet und "GPSImgDirection" die Richtung.
Wenn man schon dabei ist könnte/sollte man auch  "GPSImgDirectionRef" (Wahre oder Magnetische Ausrichtung) auslesen.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: mawenzi on January 03, 2012, 05:34:00 PM
... "GPSTrack" wird erst interessant, wenn man sich die Blickrichtung zur Aufnahme des Fotos in Google-Earth anzeigen lässt. Hier geht es jedoch um Google-Maps und da wird dieser Tag nicht unterstützt ...

Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: VGerhard on January 03, 2012, 06:42:06 PM
Zu dem "internationalen Standard", das stimmt so nicht ganz da "GPSTrack" sehr wohl ein GPS_TAGS(Exif) -Tag ist, der aber den Track (Spur) beinhaltet und "GPSImgDirection" die Richtung. Wenn man schon dabei ist könnte/sollte man auch  "GPSImgDirectionRef" (Wahre oder Magnetische Ausrichtung) auslesen.
Hallo Andi,

herzlichen Dank für die Zusatz-Informationen. Nach meinem Kenntnisstand beinhaltet GPSImgDirectionRef allerdings NUR die "Referenz für die Ausrichtung des Bildes" (also Magnetische oder Wahre Ausrichtung), nicht aber die Grad-Angabe (GPSImgDirection). Die entsprechende Ergänzung - wie oben beschrieben - funktioniert einwandfrei.

Ansonsten sollte dies selbstverständlich keine Kritik an der 4image-Software sein!

Wir wollen auf http://www.thomas-gehle.de (http://www.thomas-gehle.de) die Informationen zukünftig bei Einzelbildern zu umfangreichen Wandertouren anbieten, um so eine genaue Zuordnung der Kamera-Standorte zu vereinfachen. Zusätzlich werden wir als kostenlose Serviceleistung Downloads detaillierte Wegbeschreibungen sowie engmaschige GPS-Dateien der kompletten Wandertouren zur Verfügung stellen, beides selbstverständlich GoogleEarth-kompatibel. Genau hierzu bietet sich 4images Gallery mit einigen kleinen Ergänzungen als hervorragende Präsentations-Plattform an. Durch entsprechende Kompilation sind solche GPS-Daten auch auf verschiedenen Navigationsgeräten nutzbar.

Da auch die hochwertigen Kameras in der Regel nur eingeschränkte GPS-Daten erfassen und eine komplette Routen-Aufzeichnung nicht möglich ist, werden wir den "Geotagger Pro" von Solmeta einsetzen, der sich - auf den Blitzschuh gesteckt - sehr leicht handhaben läßt und zu zahlreichen Kameras kompatibel ist.

Servus

Gerd
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on January 03, 2012, 06:53:59 PM
..Ansonsten sollte dies selbstverständlich keine Kritik an der 4image-Software sein!

So habe ich es auch nicht aufgefasst, aber ein objektive Kritik ist auch wichtig. :)

Wir wollen auf http://www.thomas-gehle.de (http://www.thomas-gehle.de) die Informationen zukünftig bei Einzelbildern zu umfangreichen Wandertouren anbieten, um so eine genaue Zuordnung der Kamera-Standorte zu vereinfachen. Zusätzlich werden wir als kostenlose Serviceleistung Downloads detaillierte Wegbeschreibungen sowie engmaschige GPS-Dateien der kompletten Wandertouren zur Verfügung stellen, beides selbstverständlich GoogleEarth-kompatibel. ....
Na da hast du dir ja einiges vorgenommen, wenns wo eckt weist du ja wo wir sind.  :P

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Belmando on January 24, 2012, 11:13:57 AM
Hi All!

Is there any chance to see demo of this MOD?

Regards,
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on January 24, 2012, 02:40:23 PM
Welcome to the Forum!

demo1 (http://4images.vienna-pictures.com/details.php?image_id=243)
demo2 (http://galerie.fotografie-erleben.eu/details.php?image_id=63)

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: griffe on February 16, 2012, 11:19:43 AM
Hallo zusammen
habe den mod in 1.7.10 eingebaut läuft soweit alles nur beim check von neuen Bildern kommt eine DB Meldung DB Error: Bad SQL Query: INSERT INTO 4images_images (cat_id.
Sobald ich in der checkimages.php diese Werte         $additional_field_sql .= ',image_'.$key; und  $additional_value_sql .= ",'".$val."'"; lösche geht es ohne Fehler aber die Exif Daten werden nicht automatisch eingelesen. Hat da jemand eine Idee woran das liegen könnte?
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on February 16, 2012, 05:32:55 PM
Hi!

kann ja nur an step 1-3 liegen..

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: griffe on February 16, 2012, 07:52:42 PM
habe den Code nochmals eingefügt immer noch der gleiche Fehler. Was mir noch aufgefallen ist die Fehlermeldung tritt nur auf wenn wenn der Radiobutton ausführliche Version auf ja ist. habe ich evt. was falsch reinkopiert?
gruess richard
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on February 16, 2012, 09:30:04 PM
hm.. habe das jetzt bei mir getestet, funktioniert.

EDIT: auch deine datei bei mir funktioniert...
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: griffe on February 16, 2012, 11:52:12 PM
irgenwie nicht ganz logisch... Sobald ich den zusätzlichen Code in der  db_field_definitions.php entferne geht es, aber die Exif Daten werden nicht automatisch eingelesen. Schlafe mal darüber vieleicht gibt es morgen wieder eine Idee :roll: gr
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Ruhrpottjung on February 19, 2013, 05:58:08 PM
Also irgendwie will das ding bei mir nicht :( Bekomme nachdem ich alle Steps gemacht habe nur eine weiße Seite angezeigt :(
Title: Re: [Mod] EXIF V1.7.10 image_DateTimeOriginal Mysql-Feldformat
Post by: kayddorf on June 07, 2013, 08:06:49 PM
Hallihallo,

erst einmal schönen Dank für diesen prima Mod.

Er funktioniert bei mir fast fehlerfrei, bis auf eine relevantes Detail.

Leider kann ich meine Bilder nicht nach image_DateTimeOriginal sortieren, da entweder das Feldformat in der Tabelle (bei mir varchar, Größe 50, NOT NULL, Sortierung               utf8_general_ci) fehlerhaft oder die Umwandlung der Werte in der functions.php nicht richtig läuft. Oder was ganz anderes :( ?
Die Sortierung nach anderen Exif-Werten funktioniert hingegen problemlos.

Ich benutze 4images 1.711

Hier noch ein paar Angaben zum mysql-Server:

Betriebssystem: SunOS (SunOS localhost 5.10 Generic_139556-08 i86pc)
MySQL-Version: 5.5.31-log
PHP-Version: 5.3.22  Speicher: 104.00 MB   Maximale Ausführungszeit: 30 Sekunden   PHP-Info
PHP-Erweiterungen: Core, date, ereg, libxml, openssl, pcre, sqlite3, zlib, bcmath, bz2, calendar, ctype, curl, dba, dbase, dom, hash, fileinfo, filter, ftp, gd, gettext, SPL, iconv, id3, idn, session, json, lzf, mailparse, mbstring, mcrypt, mssql, mysql, mysqli, pcntl, standard, PDO, pdo_mysql, pdo_sqlite, Phar, posix, Reflection, imap, SimpleXML, soap, sockets, SQLite, exif, sysvsem, sysvshm, tidy, tokenizer, wddx, xml, xmlreader, xmlwriter, xsl, yats, zip, cgi-fcgi, mhash


Vorab vielen Dank, Kay
Title: Re: [Mod] EXIF V1.7.10 image_DateTimeOriginal Mysql-Feldformat
Post by: Rembrandt on June 07, 2013, 09:52:43 PM
Hi!
... Oder was ganz anderes :( ?...
Das ist kein Fehler.
Das war nie vorgesehen das die Bilder nach irgend welchen EXIF Daten sortiert werden sollen.
In Step 4.) in den Mod siehst du:

        if ($key == "DateTimeOriginal") {
          $exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);
        }

Das Datum wird ausgelesen und als Text abgespeichert, das kann man so natürlich nicht sortieren.
Du müßtest das ausgelesene Datum in ein UNIX Zeitformat umwandeln und dann erst in die DB speichern, dann kannst du es sortieren.
Bei der Abfrage dann der umgekehrten weg.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Umwandlung Unix Timestamp
Post by: kayddorf on June 07, 2013, 11:39:13 PM
Hallo Andi,

vielen Dank für die Antwort. Ich versuch's mal.
MFG, Kay

P.S.:

8.6.13
Folgendes habe ich ergänzt:

1. Umwandlung des Feldes image_DateTimeOriginal in der mysql-Tabelle:
Code: [Select]
ALTER TABLE `xyz`.`4images_images` CHANGE COLUMN `image_DateTimeOriginal` `image_DateTimeOriginal` INT(11) unsigned NOT NULL DEFAULT '0' , ADD INDEX (`image_DateTimeOriginal`);
Quote
Änderung des exif-Zeitfeldes  image_DateTimeOriginal entsprechend dem image_date-Feld.


2. Suche in der includes/functions.php nach:
$exif_array[$exif_match[$key]] = preg_replace("/([0-9]{4}):([0-9]{2}):([0-9]{2})/", "\\3.\\2.\\1", $exif_info);

und ersetze es durch:
//Änderung des exif-Zeitfeldes  image_DateTimeOriginal entsprechend dem image_date-Feld.
         $exif_array[$exif_match[$key]] = strtotime($exif_info);


3. Suche in der includes/functions.php nach:
"image_date" => format_date($config['date_format']." ".$config['time_format'],$image_row['image_date']),

und füge darüber ein:
//umwandlung des exif-timestamps in lesbaren zeitstempel
    "image_DateTimeOriginal" => format_date($config['date_format']." ".$config['time_format'],$image_row['image_DateTimeOriginal']),


Bis Schritt 2 funktioniert alles, leider wird der Unix-Timestamp aber im Schritt 3 nicht in ein lesbares Format umgewandelt; auf den Detailansichten der Bilder steht dann z.B. 1329058433.

Hat jemand eine Idee?

Beste Grüße, Kay
Title: Re: [Mod] EXIF V1.7.10 Umwandlung Unix Timestamp
Post by: Rembrandt on June 29, 2013, 05:28:42 AM
Hi!
....
Bis Schritt 2 funktioniert alles, leider wird der Unix-Timestamp aber im Schritt 3 nicht in ein lesbares Format umgewandelt; auf den Detailansichten der Bilder steht dann z.B. 1329058433.

Hat jemand eine Idee?
....
Schritt drei hast du an  der falschen stelle eingebaut.

suche in den Mod (Step 4.1))):

foreach ($row as $key => $val) {

füge darunter ein:

          if ($key == "image_DateTimeOriginal") {
              $val = format_date($config['date_format']." ".$config['time_format'], $row->image_DateTimeOriginal),
          }


sollte funktionieren...

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Ruhrpottjung on August 05, 2013, 10:03:48 AM
Hallo,

irgendwie habe ich nen Fehler, finde diesen aber nicht wirklich. Sobald ich den Code:

includes/functions.php

//############################ Start Google Map #################################
      $google_map ="";
      $google_info ="";     
      if ((!empty($GPSLongitude)) && (!empty($GPSLatitude))){
        $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;

        $google_info = "
           &nbsp;<a href = 'http://maps.google.de/maps?q=$GPSLatitude,$GPSLongitude&amp;t=h&amp;ie=UTF8&amp;ll=$GPSLatitude,$GPSLongitude&amp;spn=0.002316,0.005021&amp;z=18&amp;om=1' onclick=\"void(window.open(this.href, '', '')); return false;\">Position in Google Karte öffnen</a>
          <br>
          &nbsp;<a href = 'http://maps.live.com/default.aspx?v=2&amp;cp=$GPSLatitude~$GPSLongitude&amp;style=h&amp;lvl=17&amp;tilt=-90&amp;dir=0&amp;alt=-1000&amp;scene=6176719&amp;encType=1' onclick=\"void(window.open(this.href, '', '')); return false;\">Position in Microsoft Live Karte öffnen</a>
          <br>
          &nbsp;<a href = 'http://www.flashearth.com/?lat=$GPSLatitude&amp;lon=$GPSLongitude&amp;z=15.8&amp;r=0&amp;src=ggl' onclick=\"void(window.open(this.href, '', '')); return false;\">Position in Flash Earth öffnen</a><br>
         ";

        $google_map = "
          <script type='text/javascript' src='./js/googlemap.js'></script>
            <script type='text/javascript'>
              GPSLatitude = '$GPSLatitude';
              GPSLongitude = '$GPSLongitude';
              imagename = '$image_name';
            </script>
         ";
     }
           $site_template->register_vars(array(
        "google_map" => $google_map,
        "google_info" => $google_info
      ));
  //############################ End Google Map ##########################


Einbaue bekomme ich diesen Fehler:

Code: [Select]
Fatal error: Call to a member function register_vars() on a non-object in ......./includes/functions.php on line 478
Wäre schön wenn mir jemand sagen könnte was das verkehrt läuft :(

Danke und Gruß
Hans
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on August 05, 2013, 05:50:44 PM
....Wäre schön wenn mir jemand sagen könnte was das verkehrt läuft :(
...
Zip mal deine functions.php

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Ruhrpottjung on August 05, 2013, 06:17:02 PM
Hier mal die gezipte Version. Wenn ich den Teil hinter "**** End Exif ****" wegnehme läuft alles wie es sollte.

Danke schon mal vorweg
Hans
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on August 05, 2013, 06:29:01 PM
so, es war an der falschen stelle eingebaut.
da kannst du aber nichts dafür, es liegt an der Einbauanleitung (werde ich ändern).
Die Zeile mit "End Exif" gibt es zwei mal.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Ruhrpottjung on August 05, 2013, 08:54:00 PM
Sag ich mal ganz lieben Dank für die Hilfe.
Jetzt geht alles so wie es sollte.


Gruß
Hans
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 26, 2014, 10:25:48 PM
Hallo Andi,

super MOD!

Ich habe nur ein kleines Problem:

Beim Ausführen der create_exif_data.php gibt er mir bei jedem Bild, dass EXIF-Daten enthält, folgende Fehlermeldung:
DB Error: Bad SQL Query: UPDATE 4images_images SET image_id = '1260',image_make = 'SONY',image_model = 'SLT-A65V',image_exposure = '1/250 sec(s)',image_aperture = 'F/8',image_isospeed = '100',image_datetime = '12.06.2014 16:56:24',image_focallen = '18mm' WHERE image_id = 1260
Unknown column 'image_exposure' in 'field list'

Das besagte Feld gibt es nicht in der Datenbank, jedoch steht es auch so nirgendwo im Code.
Hast du eine Idee, wo hier der Fehler liegt?

Vielen Dank und Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on July 27, 2014, 06:57:36 AM
Hi!
....
Das besagte Feld gibt es nicht in der Datenbank, jedoch steht es auch so nirgendwo im Code.
Hast du eine Idee, wo hier der Fehler liegt?
....

suche mal in schritt 6.) main.php

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 27, 2014, 10:53:13 AM
Hi Andi,

war wohl gestern schon spät...
Manchmal sollte man einfach aufhören und am nächsten Tag weitermachen.

Hatte die functions.php nicht auf den Server überspielt  :oops: :oops:

Trotzdem vielen Dank für deine Hifle!

Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on July 27, 2014, 04:10:05 PM
ja, das kenn ich :)
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 28, 2014, 06:44:47 PM
Hi Andi,

jetzt bin ich doch noch auf ein Problem gestoßen (was aber nicht an diesem MOD liegt):

Wenn man ein div um die Karte hat, dass auf display:none gesetzt ist, und durch Javascript beim Klick auf einen Button sichtbar gemacht wird, lädt die Karte nicht ordungsgemäß.

Folgender Code wird verwendet:

<div id="show_map_exif" class="hidden">

{if google_map}
<div style="float:left;margin-right:5px;">
  <table width="100%" border="0" cellspacing="0" cellpadding="1">
<tr>
  <td class="bordercolor">
<table width="100%" border="0" cellpadding="3" cellspacing="0">
  <tr>
<td class="head1" valign="top"colspan="2">Google Info: &nbsp;</td>
  </tr>
  <tr>
</table>
  </td>
</tr>
  </table>  

<div id="map_canvas" style="width:500px;height:280px;margin:10px 0px;"></div>
{google_map}

</div>
{endif google_map}
// andere div's

Dazu als CSS:

.hidden { display: none; }
.unhidden { display: block; }

Der Javascript-Code sieht folgendermaßen aus:

<script type="text/javascript">
  function unhide(divID) {
    var item = document.getElementById(divID);
    if (item) {
      item.className=(item.className=='hidden')?'unhidden':'hidden';
    }
  }
</script>

Google spuckt dazu eine menge Ergebnisse aus, da es ein bekanntes Problem der Google Maps API ist.
Jedoch weiß ich ehrlich gesagt nicht wirklich, wo man genau etwas am Code ändern muss.

Weißt du vielleicht eine Lösung?

Vielen Dank und Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on July 29, 2014, 05:31:16 AM
Ich hatte das gleiche Problem, du musst die Karte verzögert laden lassen.
Erst das Div aufklappen und dann die Karte laden, ich habe das mit einen  "onClick" Event  gelöst:


mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 30, 2014, 07:55:42 PM
Ah, das klingt logisch.

Wo genau muss man das aber einbauen?
Die Karte liegt ja in einem div, daher ist es ja nicht möglich, das im Link einzubauen, der das div auf display:inline setzt?

Funktioniert so jedenfalls nicht:

<a href="javascript:unhide('show_map_exif');" onClick="setTimeout('load()', 2);" class="button_link">{lang_show_hide_exif}</a>

Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on July 31, 2014, 06:31:14 AM
Hier gibt es ein Bspl. mit Tabellen, wenn du damit die Map auf zu klappen möchtest.
http://www.4homepages.de/forum/index.php?topic=22216.msg121180#msg121180

EDIT:
So ich habe mir das nochmals angesehen, wenn dein auf/zuklappen grundsätzlich funktioniert, suche in der googlemap.js:

window.setTimeout('initGmaps();',500);

und ersetze es mit:

window.setTimeout('initGmaps();',3000);

Zur Erklärung, zuerst muss das "Div" oder die "Tabelle"  vollständig aufgeklappt sein  um die Karte korrekt zu laden.
Mit den "window.setTimeout" wird die Funktion "initGmaps" um (wie in diesen fall) 3000 Millisekunden verzögert geladen.

Als Demo ganz unten auf dieser Seite:
http://demo.vienna-pictures.com/details.php?image_id=44

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 31, 2014, 01:03:12 PM
Hallo Andi,

das aus-/einklappen funktioniert wunderbar, nur die Karte lädt nicht vollständig.

window.setTimeout('initGmaps();',3000);

Wenn der User nun aber länger als 3s das Bild betrachtet und sich dann erst die Karte anschaut (also per Link das div öffnet), wird die Karte erneut nur unvollständig angezeigt.

Ist es möglich, die Karte erst dann zu laden, wenn der besagte Link angeklickt wird?
Dann öffnet sich das div mit Karte und diese lädt sich erst dann.

Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on July 31, 2014, 01:11:34 PM
....

Ist es möglich, die Karte erst dann zu laden, wenn der besagte Link angeklickt wird?
Dann öffnet sich das div mit Karte und diese lädt sich erst dann.
...
Genauso funktioniert es, du kannst dir es ja auf der Demo Seite ansehen
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 31, 2014, 01:19:13 PM
Wenn ich die Seite aufrufe und innerhalb von weniger als 3s die Karte öffne, dann ja.

Warte ich länger als 3s, lädt die Karte nur unvollständig.

Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: Rembrandt on July 31, 2014, 05:59:21 PM
So ich habe mir das nochmals angesehen, die "windows.settimeout" gehört raus aus der googlemap.js und in den link der das "Div" aufklappen lässt hinein, Funktioniert wunderbar.
Auf meiner Testseite habe ich das Timeout auf 50 Millisekunden gestellt.
Die zweite Möglichkeit ist, "windows.settimeout"  in die Klappfunktion einzufügen, auch das geht.

mfg Andi
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: senloel on July 31, 2014, 06:19:02 PM
Das wars, perfekt!

Funktioniert wunderbar!

Vielen Dank für deine Hilfe!  :thumbup:

Grüße,
Patrick
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: cbogedain on September 19, 2016, 11:16:42 PM
cant get it to read from the jpgs files also when I manually add the lat and long I get this



Oops! Something went wrong.

This page didn't load Google Maps correctly. See the JavaScript console for technical details.


please help
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: dereiziger on April 07, 2017, 10:02:25 PM
When I put this code in the functions.php

Code: [Select]

//############################ Start EXIF ##############################
        if ($detailed_view ) {
          global $site_db,$lang,$additional_image_fields;
          $additional_field_sql = "";
          foreach ($additional_image_fields as $key => $val){
            $additional_field_sql .= ','.$key;
          }
          $sql = "SELECT image_id".$additional_field_sql."
                  FROM ".IMAGES_TABLE."
                  WHERE image_id = '$image_id'";
          $result = $site_db->query($sql);
          $row = mysql_fetch_object($result);
          $GPSLongitude = $row->image_GPSLongitude;
          $GPSLatitude = $row->image_GPSLatitude;         
          $bgcounter = 0;
          foreach ($row as $key => $val) {
            if ($val != "") {
              $search_key = $key;
              $url_val = '"' . $val . '"';
              $val = (is_numeric($val)) ? round($val,6) : $val;
              $key = str_replace('image_','',($key));
             
              if (isset($lang['exif_'.$key])) {
                $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
               
                $site_template->register_vars(array(
                  "exif_value" => "<a href=\"".$site_sess->url(ROOT_PATH."search.php?search_keywords=".urlencode($url_val))."&amp;search_fields=$search_key \">".format_text($val)."</a>",
                  "exif_name" => $lang['exif_'.$key],
                  "row_bg_number" => $row_bg_number,
                  "image_lat" => $GPSLatitude,
                  "image_lon" => $GPSLongitude
                ));
                $exif_info .= $site_template->parse_template("exif_bit");
              }
            }
          }
        }
//########################### End Exif ###################################

in place of this code:
Code: [Select]
if ($detailed_view && $image_info[2] == 2 && function_exists('exif_read_data') && $exif_data = @exif_read_data($src, 'EXIF')) {
          $lens_info = get_lens_info($src);
  $exif_array = get_exif_info($exif_data);
          $bgcounter = 0;
          foreach ($exif_array as $key => $val) {
            $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");
          }
        }

I lose my EXIF and Lens information. I'm not savvy enough to combine this information so that it all works.
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: mahsabk on April 17, 2018, 01:31:11 PM
google map on my site increase the loading speed what should i do?
Title: Re: [Mod] EXIF V1.7.10 Optional Googlemap
Post by: sayehsazan1 on April 11, 2019, 12:20:03 PM
thank you