4images Forum & Community

4images Modifications / Modifikationen => Mods & Plugins (Releases & Support) => Topic started by: Rembrandt on March 30, 2008, 07:29:52 PM

Title: [MOD] Exif V.1.7.6
Post by: Rembrandt on March 30, 2008, 07:29:52 PM
Dieser MOD erweitert die in den Versionen 1.7.6 - 7  enthaltene EXIF funktion um folgende Werte:
 
 Belichtungsabweichung,   
 Blendenöffnungswert,
 Maximaler Blendenöffnungswert,
 Belichtungsmessung,
 Blitz,
 Belichtungsprogramm,
 Belichtungsmodus,
 Weißabgleich,
 GPS Breitengrad, //aus dem MOD von @Erik
 GPS Längengrad,  //aus dem Mod von @Erik
 GPS Track,

zusätzlich werden alle exif informationen in die datenbank geschrieben, und von dort ausgelesen.
somit werden auch dann die exif infos auf der detailseite dargestellt,
wenn mit "checkimages" die bilder verkleinert werden und die originalbilder in den ordner "big" verschoben werden.

DEMO: exif mod (http://www.demo.vienna-pictures.com/details.php?image_id=44#z1)

neue Dateien:
 install_exif.php
 member_install_exif.php (new 25.10.2009 )
 checkimages.php (code update 25.10.2009 )
 update_exif_index.php (code update 25.10.2009 )

modifizierte Dateien:
 includes/db_field_definitions.php
 lang/deutsch/main.php
 includes/funktions.php (code update 25.10.2009 )
 admin/checkimages.php (code update 25.10.2009 )
 includes/member.php (new 25.10.2009 )

1.) sucht  in  derincludes/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 ( $ExposureTime[0] == 1 && $ExposureTime[1] == 1 ){
                $exif_array[$exif_match[$key]] = $ExposureTime[1]." sec(s)";
            }
            elseif ( $ExposureTime[0] == 1 ) {
              $exif_array[$exif_match[$key]] = "1/".($ExposureTime[1] * $ExposureTime[0])." sec(s)";
            }
            elseif(($ExposureTime[0] > 1)){
              $exif_array[$exif_match[$key]] = "1/".round($ExposureTime[1]/$ExposureTime[0])." sec(s)";
            }
            elseif ( $ExposureTime[1] > 1 ) {
              $exif_array[$exif_match[$key]] = ($ExposureTime[0]/$ExposureTime[1])." sec(s)";
            }
            elseif( $ExposureTime[1] == 1 ) {
              $exif_array[$exif_match[$key]] = ($ExposureTime[0] * $ExposureTime[1])." 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 ersetzt es mit diesem:

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 ((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") {
 $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 = "Anders";}
 $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 = "Auto Bracket";}  
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 = $GPSLatitude_s[0] / $GPSLatitude_s[1];
        
         $GPSLatGrad = $GPSLatfaktor * ($GPSLat_h + ($GPSLat_m + ($GPSLat_s / 60))/60);
        
         $exif_array[$exif_match[$key]] =  $GPSLatitudeRef . " " .$GPSLat_h . "° ". $GPSLat_m . "' " . $GPSLat_s . "'' ($GPSLatGrad)";
        }
        elseif ($key == "GPSLongitude") {
         $GPSLongitude_h = explode("/", $exif_info[0]);
         $GPSLongitude_m = explode("/", $exif_info[1]);
         $GPSLongitude_s = explode("/", $exif_info[2]);
        
         $GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
         $GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
         $GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
        
         $GPSLongGrad = $GPSLongfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
        
         $exif_array[$exif_match[$key]] =  $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";
        }
        elseif ($key == "GPSAltitude") {
    $GPSAltitude = explode("/", $exif_info);
          $exif_array[$exif_match[$key]] = ($GPSAltitude[0] / $GPSAltitude[1]) . " Meter über NN";
        }
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;
}


3.) sucht in der includes/funktions.php:

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


und ersetzt es mit:

if ($detailed_view && $image_info[2] == 2){
       global $site_db,$lang;
$sql = "SELECT image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength, image_ExposureBiasValue, image_ApertureValue, image_MaxApertureValue,
                 image_MeteringMode, image_Flash, image_ExposureProgram, image_ExposureMode, image_WhiteBalance, image_GPSLatitude, image_GPSLatitudeRef, image_GPSLongitude, image_GPSLongitudeRef, image_GPSAltitude,
                 image_GPSTrack
                 FROM ".IMAGES_TABLE."
                 WHERE image_id = '$image_id'";
$result = $site_db->query($sql);
$row = mysql_fetch_object($result);  
$bgcounter = 0;
foreach ($row as $lang['exif_'.$key] => $val) {            
if ($val != "") { $key = str_replace('image_','',($lang['exif_'.$key]));

          if (($key != "GPSLongitudeRef") &&  ($key != "GPSLatitudeRef")) {
          if ($key == "GPSLongitude") {
           $GPSLongtude = substr (strrchr($val, "("), 1);
           $GPSLongtude = substr ($GPSLongtude,0, strlen($GPSLongtude)-1);
           }
          if ($key == "GPSLatitude") {
           $GPSLatitude = substr (strrchr($val, "("), 1);
           $GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);
           }  

        $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
            $site_template->register_vars(array(
               "exif_value" => format_text($val, 1),
               "exif_name" => $lang['exif_'.$key],
               "row_bg_number" => $row_bg_number
            ));
            $exif_info .= $site_template->parse_template("exif_bit");
           } // GPS
          } //end val
        }  // end foreach
     } // Exif aus DB
  }
}
//################################# End Exif aus DB #################################################################


3.) in der includes/db_field_definitions.php vor ?>

//>>>>>>>>>>>>>>>>>>>>>>>>>>Exif-Info-Start<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$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_GPSLatitude'] = array($lang['exif_GPSLatitude'], "text", 0);
$additional_image_fields['image_GPSLatitudeRef'] = array($lang['exif_GPSLatitudeRef'], "text", 0);
$additional_image_fields['image_GPSLongitude'] = array($lang['exif_GPSLongitude'], "text", 0);
$additional_image_fields['image_GPSLongitudeRef'] = array($lang['exif_GPSLongitudeRef'], "text", 0);
$additional_image_fields['image_GPSAltitude'] = array($lang['exif_GPSAltitude'], "text", 0);
$additional_image_fields['image_GPSTrack'] = array($lang['exif_GPSTrack'], "text", 0);
//<<<<<<<<<<<<<<<<<<<<<<<<<<<Exif-Info-Stop<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


4.) sucht  in lang/deutsch/main.php:

// EXIF Tags
$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 ersetzt es mit:

// EXIF Tags
$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:";


5.) sucht  in der member.php (dieser schritt ist nur notwendig wenn ihr auch bei einen member upload die exif infos auslesen wollt) :

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


und ersetzt es mit:

//#################################### Exif Mod Start  #################################################
if (function_exists('exif_read_data') && $exif_data = @exif_read_data($src, 'EXIF')) {

          $exif_array = get_exif_info($exif_data);
            foreach ($exif_array as $key => $val) {
                if ($key == "Make") {$Make = $val;}
if ($key == "Model") {$Model = $val;}
if ($key == "DateTimeOriginal") {$DateTimeOriginal = $val;}
if ($key == "ISOSpeedRatings") {$ISOSpeedRatings = $val;}
if ($key == "ExposureTime") {$ExposureTime = $val;}
if ($key == "FNumber") {$FNumber = $val;}
if ($key == "FocalLength") {$FocalLength = $val;}
if ($key == "ExposureBiasValue") {$ExposureBiasValue = $val;}
if ($key == "ApertureValue") {$ApertureValue = $val;}
if ($key == "MaxApertureValue") {$MaxApertureValue = $val;}
if ($key == "MeteringMode") {$MeteringMode = $val;}
                if ($key == "Flash") {$Flash = $val;}
if ($key == "ExposureProgram") {$ExposureProgram = $val;}
if ($key == "ExposureMode") {$ExposureMode = $val;}
if ($key == "WhiteBalance") {$WhiteBalance = $val;}
if ($key == "GPSLongitudeRef") {$GPSLongitudeRef = $val;}
if ($key == "GPSLatitudeRef") {$GPSLatitudeRef = $val;}
if ($key == "GPSLongitude") {
              $GPSLongitude = substr (strrchr($val, "("), 1);
              $GPSLongitude = substr ($GPSLongitude,0, strlen($GPSLonigtude)-1);
                }
                if ($key == "GPSLatitude") {
              $GPSLatitude = substr (strrchr($val, "("), 1);
              $GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);
}
if ($key == "GPSAltitude") {$GPSAltitude = $val;}
if ($key == "GPSTrack") {$GPSTrack = $val;}
}
             }

      $current_time = time();
     if ($direct_upload) {
    $sql = "INSERT INTO ".IMAGES_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments, image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength, image_ExposureBiasValue, image_ApertureValue, image_MaxApertureValue, image_MeteringMode, image_Flash, image_ExposureProgram, image_ExposureMode, image_WhiteBalance, image_GPSLatitude, image_GPSLatitudeRef, image_GPSLongitude, image_GPSLongitudeRef, image_GPSAltitude, image_GPSTrack".$additional_field_sql.")
                VALUES
                ($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, $image_active, '$new_name', '$new_thumb_name', '$image_download_url', $image_allow_comments, '$Make', '$Model', '$DateTimeOriginal', '$ISOSpeedRatings', '$ExposureTime', '$FNumber', '$FocalLength','$ExposureBiasValue', '$ApertureValue', '$MaxApertureValue', '$MeteringMode', '$Flash', '$ExposureProgram', '$ExposureMode', '$WhiteBalance', '$GPSLatitude', '$GPSLatitudeRef', '$GPSLongitude', '$GPSLongitudeRef', '$GPSAltitude', '$GPSTrack'".$additional_value_sql.")";
        $result = $site_db->query($sql);

        $image_id = $site_db->get_insert_id();
        if ($result) {
          include(ROOT_PATH.'includes/search_utils.php');
          $search_words = array();
          foreach ($search_match_fields as $image_column => $match_column) {
            if (isset($HTTP_POST_VARS[$image_column])) {
              $search_words[$image_column] = stripslashes($HTTP_POST_VARS[$image_column]);
            }
          }
          add_searchwords($image_id, $search_words);
        }
      }
      else {

        $sql = "INSERT INTO ".IMAGES_TEMP_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_media_file, image_thumb_file, image_download_url, image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength, image_ExposureBiasValue, image_ApertureValue, image_MaxApertureValue, image_MeteringMode, image_Flash, image_ExposureProgram, image_ExposureMode, image_WhiteBalance, image_GPSLatitude, image_GPSLatitudeRef, image_GPSLongitude, image_GPSLongitudeRef, image_GPSAltitude, image_GPSTrack".$additional_field_sql.")
                VALUES
                ($cat_id, ".$user_info['user_id'].", '$image_name', '$image_description', '$image_keywords', $current_time, '$new_name', '$new_thumb_name', '$image_download_url', '$Make', '$Model', '$DateTimeOriginal', '$ISOSpeedRatings', '$ExposureTime', '$FNumber', '$FocalLength','$ExposureBiasValue', '$ApertureValue', '$MaxApertureValue', '$MeteringMode', '$Flash', '$ExposureProgram', '$ExposureMode', '$WhiteBalance', '$GPSLatitude', '$GPSLatitudeRef', '$GPSLongitude', '$GPSLongitudeRef', '$GPSAltitude', '$GPSTrack'".$additional_value_sql.")";
        $result = $site_db->query($sql);
}
//#################################### Exif Mod End #################################################


ersetzt bitte eure "admin/checkimages.php" mit der version hier im anhang.

kopiert die datei "update_exif_index.php" nach "admin/plugin".
mit dieser datei werden die vorhanden bilder der galerie nach exifdaten durchsucht und in die datenbank geschrieben.

kopiert die dateien install_exif.php und falls notwendig, die "member_install_exif.php"  in euren root ordner und führt sie aus.

wenn ihr diese suchfeld erweiterung installiert habt http://www.4homepages.de/forum/index.php?topic=21053.0
könnt ihr allle bilder der galerie nach exifdaten durchsuchen!


mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: ivan on March 30, 2008, 07:41:03 PM
hallo andi,
finde es super dass sich jemand mit dieser materie befasst.
wenigstens sind bei 1.7.6 nun die iptc werte auf deutsch... ;)

die exif daten sind halt immer so eine sache...
die einen brauchens, die anderen nicht.

ich setze exif und iptc auch auf meiner seite ein, bin genau
gleicher meinung wie du, sie sind unverzichtbar.

danke für deine erweiterung

p.s schön wäre es, wenn man alles in die jeweilige sprache umwandeln könnte
50% kann man schon in der main.php anpassen
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on March 30, 2008, 09:01:48 PM
Abend!

habe die englische übersetzung (soweit es mir möglich war) im ersten post hochgeladen.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on March 31, 2008, 06:31:08 PM
Hi,
ich habe deinen Mod nun unter 1.7.4 installiert und es werden auch die EXIF Daten angezeigt, aber leider werden die nicht in die Datenbank eingefügt:-(

LG
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on March 31, 2008, 06:41:34 PM
Hi!
ja das ist ja mein großes problem was ich im ersten post geschrieben habe,
 da ich zu dämlich bin das selber zu schreiben ,das die exif automatisch mit in die datenbank aufgenommen werden.
aber vielleicht erbarmt sich doch noch einer der das kann.

wenn du im ACP bist und ein Bild dort bearbeitest, dann stehn auch die exif in der datenbank.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on March 31, 2008, 06:46:52 PM
Wer liest sollte auch verstehen was da steht :-) Mein Fehler. OK, wenn ich alles von Hand eingebe ist es klar :-) Dann hoffe ich, das jemand der sich damit auskennt, auch einmal umsetzen würde :-)

LG
Ingo

P.S. Danke für die schnelle Antwort......
Title: Re: [MOD] Exif V.1.7.6
Post by: mawenzi on March 31, 2008, 07:09:43 PM
@ Rembrandt

... um einen Wert sollte man die Anzeige der GPS-Exif-Info m.E. noch erweitern ...
... Wert : "GPSTrack" ...
... dieser Wert zeigt die Blickrichtung vom Aufnahmestandort zum Fotomotiv im Uhrzeigersinn in Grad an ...
... also von Nord= 0° , Ost= 90° , Süd = 180° über West = 270° bis dann 360° ...
... in Google Maps lässt sich dieser Wert noch nicht darstellen, in Google Earth jedoch schon ...
... d.h. der Globus wird in Blickrichtung nach oben ausgerichtet ...

die erforderlichen Erweiterungen für die Exif-Info habe ich in der exif.php 
( http://www.4homepages.de/forum/index.php?topic=3274.msg84606#msg84606 ) wie folgt vorgenommen :

1. ... in define('EXIF_FILTER', "
Code: [Select]
GPSTrack:

2. ... in function exif_parse_value($name, $val) {
Code: [Select]
case "GPSTrack":
$val = exif_get_str_val($val) ." °";
break;

2. ... in function exif_parse_name($name, $val) {
Code: [Select]
case "GPSTrack":
$name = "GPS-Blickrichtung";
break;

Eine Anpassung für die Auslesung der Exif-Info über die functions.php (siehe oben) müsste dann dementsprechend erfolgen ...


Title: Re: [MOD] Exif V.1.7.6
Post by: honda2000 on March 31, 2008, 07:25:35 PM
schön wäre doch (sonst wir dies ein endlos lager Thread), wenn die Erweiterung der tabelle in der DB eine .txt oder eine SQL-Datei wäre, mit der entsprechenden Anleitung, noch besser wäre, wenn es wie bei den Slide-Show-MOD´s von Kurtw, gelich eine install.php vorhanden wäre, oder??

(ich brauchs nicht, bin kein Fotograf, aber das wird sicher noch 100x gefragt) :wink:
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on March 31, 2008, 07:31:26 PM
Hi!
steht doch eh oben?
eintrag in die Datenbank.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: honda2000 on March 31, 2008, 07:41:11 PM
ja, ich weis was man eintragen muss, und wo
nur
wenn jemand von MySQL keine Ahung hat, der nimmt das ich die Zwischenablagen und versucht es so einzufügen, das geht aber dann nicht

es war ja nur ein Vorschlag, ein Hinweis, KEIN MUSS)
Title: Re: [MOD] Exif V.1.7.6
Post by: mawenzi on March 31, 2008, 09:12:51 PM
sonst wir dies ein endlos lager Thread
...  :? ...
... mit solchen Kommentaren wohl ...
... Rembrandt hat seinen ersten Post doch bestens aufgestellt und aktualisiert ihn auch ...
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on March 31, 2008, 09:41:09 PM
...... um einen Wert sollte man die Anzeige der GPS-Exif-Info m.E. noch erweitern ...
... Wert : "GPSTrack" ...
...

ist erledigt und oben aktuallisiert.  :D

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: Nicky on March 31, 2008, 10:08:18 PM
hier die automatischen db einträge.

thx 2 all
Title: Re: [MOD] Exif V.1.7.6
Post by: nobby on March 31, 2008, 10:27:06 PM
Hallo Rembrandt,

habe Dein MOD Eingebaut, läuft Hervorragend, klasse Arbeit.

Besten Dank !

nobby
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 01, 2008, 08:26:05 PM
Abend!

soda, habe es nun doch geschaft die exif informationen in die datenbank zu bekommen.

es gab eine kleine änderung in der funktions.php, betroffen sind die funktionen GPSLatidudeRef und GPSLongitudeRef, Sorry.
diese änderung war notwendig da ich sonst diese werte nicht in die datenbank bekommen hätte.

desweitern wird die modifizierte checkimages.php aus dem forum benötigt die ich im ersten post hochgeladen habe, die ist zuständig dafür damit die daten in die datenbank geschrieben werden.

@Nicky, DANKE für die Datei!

mfg Andi


Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 02, 2008, 08:52:51 AM
Hi.
Ich habe nun mal deinen MOD mit der neuen Checkimages ausprobiert. Nur leider funktioniert da die Option BIG Folder nicht.
(Sie funktioniert nur nicht wenn ich in den Default Settings das einstelle:


//--------| Default Settings |-------------

$quality_default = ($config['auto_image_quality']) ? $config['auto_image_quality'] : 85; //image quality
$quality_thumbs_default = $config['auto_thumbnail_quality']; //thumbnail quality
$dimension_default = $config['max_image_width']; //image dimension
$dimension_thumbs_default = $config['auto_thumbnail_dimension']; //thumbnail demension
$max_dimension_default = 600; //displayed in preview image dimension (not image resizing)
$num_newimages_default = 30; //images per circle
$big_folder_default = "big"; //name of the "big" folder
if (!$mode) {
  $big_default = 1; //0 or 1 save original image
  $auto_iptc_default = 1; //0 or 1 auto insert IPTC
  $date_iptc_default = 1; //0 or 1 auto insert date from IPTC
  $detailed_default = 1; //0 or 1 detailed view
  $auto_resize_default = 1; //0 or 1 resize images
  $auto_thumbs_default = 1; //0 or 1 create thumbs
}

//----------| End Settings |---------------

)

Und wenn ich nur die GPS Erweiterungen in meine Checkimages.php aufnehme, bekomme ich folgende Fehlermeldung:
Code: [Select]
DB Error: Bad SQL Query: INSERT INTO 4images_images (cat_id, user_id, image_name, image_description, image_keywords, image_date,
 image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments, image_Make, image_Model,
image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength, image_ExposureBiasValue,
image_ApertureValue, image_MaxApertureValue, image_MeteringMode, image_Flash, image_ExposureProgram, image_ExposureMode,
image_WhiteBalance, price, image_gmap_latitude, image_gmap_longitude, image_gmap_zoom, image_gmap_type, image_gmap_show,
image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength,
image_ExposureBiasValue, image_ApertureValue, image_MaxApertureValue, image_MeteringMode, image_Flash, image_ExposureProgram,
image_ExposureMode, image_WhiteBalance, image_ColorSpace, image_GPSLatitude, image_GPSLatitudeRef, image_GPSLongitude,
image_GPSLongitudeRef, image_GPSAltitude) VALUES (123, 14, 'Antje', 'Antje, das Fotomodel', 'Heels Dessous Stiletto Portrait Lack Leder',
UNIX_TIMESTAMP('2008-04-02 07:47:45'), 1, 'IMG_5191.jpg', 'IMG_5191.jpg', '', 1, 'Canon', 'Canon EOS 350D DIGITAL', '26.02.2008 10:26:41',
'400', '1/60 Sekunde', 'F/4', '28 mm','0 EV', 'F/4', 'F/4', 'Multi-Segment', 'Blitz ausgel&ouml;st, erzwungener Blitz, Rote Augen Reduktion',
'Programmautomatik', 'Automatisch', 'Manuell', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')

Column 'image_WhiteBalance' specified twice

Vielleicht hat ja jemand eine Idee :-)

LG
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 02, 2008, 10:10:17 AM
Wenn ich vor dem if mode ein // setze und auch vor der abschliessenden Klammer ein // setze, dann funktioniert es wenigstens in der "nicht ausführlichen Version". Dann wird die big funktion auch ausgeführt.

Mir ist aufgefallen das es sich hier um die scriptversion 1.8 handelt. Wieso ist denn die Filterfunktion der Dateinamen rausgenommen worden?
Code: [Select]
*        Copyright: (C) 2002 Jan Sorgalla                                *
 *            Email: jan@4homepages.de                                    *
 *              Web: http://www.4homepages.de                             *
 *    Scriptversion: 1.8                                                  *
 *    File version: 2.6.2                                                 *
 *                                                                        *
 *    Never released without support from: Nicky (http://www.nicky.net)   *


Code: [Select]
$log[] = "Working on <b>".MEDIA_DIR.(($old_cat_id != 0) ? "/".$old_cat_id : "")."/".stripslashes($image_media_file)."</b> file:";
        if ($filter && preg_match("/( |%20|[^-\._a-zA-Z0-9])/", stripslashes($image_media_file)))
        {
          $image_media_file_backup = $image_media_file;
          $image_media_file = stripslashes($image_media_file);
          $file = str_replace(" ", "_", $image_media_file);
          $file = str_replace("%20", "_", $file);
          $file = preg_replace("/[^-\._a-zA-Z0-9]/", "", $file);
          $oldwd = getcwd();
          $n = 2;
          $copy = "";
          $file_name = substr($file,0,(strlen($file)-strlen(strrchr($file,"."))));
          $file_ext = substr(strrchr($file,"."), 1);
          chdir(realpath(MEDIA_PATH.(($old_cat_id != 0) ? "/".$old_cat_id : "")));
          while (file_exists($file_name.$copy.".".$file_ext)) {
            $copy = "_".$n;
            $n++;
          }
          $file = $file_name.$copy.".".$file_ext;
          if (rename(basename($image_media_file), basename($file)))
          {
            $log[] = str_replace("{from}", $image_media_file, str_replace("{to}", $file, $lang['cni_media_file_rename']));
            $image_media_file = $file;
          }
          else
          {
            $log[] = str_replace("{from}", $image_media_file, str_replace("{to}", $file, $lang['cni_media_file_rename_error']));
            $image_media_file = $image_media_file_backup;
          }
          chdir($oldwd);
        }
        if ($filter && preg_match("/( |%20|[^-\._a-zA-Z0-9])/", stripslashes($image_thumb_file)))
        {
          $image_thumb_file_backup = $image_thumb_file;
          $image_thumb_file = stripslashes($image_thumb_file);

          $file = str_replace(" ", "_", $image_thumb_file);
          $file = str_replace("%20", "_", $file);
          $file = preg_replace("/[^-\._a-zA-Z0-9]/", "", $file);
          $oldwd = getcwd();
          $n = 2;
          $copy = "";
          $file_name = substr($file,0,(strlen($file)-strlen(strrchr($file,"."))));
          $file_ext = substr(strrchr($file,"."), 1);
          chdir(realpath(THUMB_PATH.(($old_cat_id != 0) ? "/".$old_cat_id : "")));
          while (file_exists($file_name.$copy.".".$file_ext)) {
            $copy = "_".$n;
            $n++;
          }
          $file = $file_name.$copy.".".$file_ext;
          if (rename(basename($image_thumb_file), basename($file)))
          {
            $log[] = str_replace("{from}", $image_thumb_file, str_replace("{to}", $file, $lang['cni_thumb_file_rename']));
            $image_thumb_file = $file;
          }
          else
          {
            $log[] = str_replace("{from}", $image_thumb_file, str_replace("{to}", $file, $lang['cni_thumb_file_rename_error']));
            $image_thumb_file = $image_thumb_file_backup;
          }
          chdir($oldwd);
        }
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 02, 2008, 10:40:58 AM
Hi!
@rinaldos, mit dem bigfolder kenn ich mich nicht aus da ich das nicht verwende.

die sache mit dem SQL ist klar, du hast sicher in deiner checkimages version die update.php includiert, die frage ist jetzt wozu?

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 02, 2008, 10:58:43 AM
Ähm, wieso ist die Sache mit dem SQL klar? Ich weiss nicht wieso ich die Fehlermeldung bekomme, wenn ich die Ausführliche Version  verwende :-( Ich nutze derzeit noch die Version 1.7.4, da ich nicht so einfach (Aufgrund der vielen Änderungen) nicht auf die 1.7.6 updaten kann. Aber erklär mir doch welche update.php du meinst?

Die big Funktion nutze ich, damit ein Nutzer nur eine Vorschau von 1024x768 hat und die downloadversion eben von 3456x2304 oder so. Denn es ist schon ein kleiner UNterschied ob ich je Bild 2-6MB laden muss oder nur 100-300kb :-)

Jedenfalls hast du mit dem MOD nun neue Möglichkeiten geschaffen hat. Nun kann man auch nach EXIF Werten (Brennweite/ISO etc...) suchen und nicht nur nach Kommentaren oder so...

Meine zukünftigen Vorschläge zu diesem MOD:
Ein Addon für diesen MOD wäre es, wenn man ein Script (PLUGIN) schreibt, mit dem man die fehlenden EXIF Daten in die Datenbank bekommt. Vielleicht wäre ja eine Abwandlung von rebuild_serachindex eine Möglichkeit. Leider sind meine Kenntnisse in mysql und php nun doch nicht so bewandert um dieses zu realisieren.

Gruß
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 02, 2008, 11:07:10 AM
kannst du mal deine checkimages hochladen?

ich habe mir jetzt mal testweise die original checkimages 2.11 installiert aber die killt mir ja jegliche exif daten aus dem bild.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 02, 2008, 11:17:15 AM
klar.
Also die 2.11 (checkimages.020408.php.txt) und die von Dir (abgewandelt mit der neuen Filterfunktion)
Ach ich nutze IMAGEMAGICK und nicht die GD2 Erweiterungen! Dann klappt es auch mit den EXIF Daten
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 02, 2008, 11:31:13 AM
Hi!

so war ein fehler von mir, mit der neuen version checkimages 2.11 hier aus dem forum und der exif erweiterung funktioniert es schon, nur mußte ich "autoresizer" abschalten.
da sonst die exif gekillt werden.

sorry ich kenn mich da jetzt nicht mehr aus??
du hast geschrieben das deine checkimages.php eine fehlermeldung bring "sql...blabla... welche version soll das jetzt sein?
die beiden versionen die du soeben hochgeladen hast, da ist die eine von mir und die andere ist die originale ohne exif.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 02, 2008, 02:46:32 PM
Ups sorry, ich hatte die falsche version hochgeladen :-(
Beim ganzen probieren verliert man den Überblick :-( Hier erscheint der Fehler soabld ich die Exif erweiterung einbaue. Naja, deine Version klappt ja, solange ich nicht die Ausführliche Version nutze.....


Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 02, 2008, 05:33:07 PM
Hi!
also die datei die du jetzt hier hochgeladen hast unterscheidet sich auch von der originalen.
diese habe ich heute im ersten post angehängt mit der exif info.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: nobby on April 02, 2008, 05:43:11 PM
Hallo,

wo ist denn nun der Unterschied zwischen checkimages2.11.php und checkimages.php.

Ich hatte zuerst Probleme das die Daten nicht in die Datenbank geschrieben wurden.
Erst mit der checkimages.php klappt es nun.

nobby
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 02, 2008, 05:56:03 PM
Tag!
das problem hatte ich auch.
mit der originalen checkimages aus der 4images 1.7.6 funktionierte es nicht,fragt mich bitte nicht warum, ich weis es nicht. (da gehören gescheitere her....  :lol: )

die checkimages version im anhang ist ja schon eine modifizierte von hier aus dem forum, der ich noch die exif funktion reingeschrieben habe, und mit der gehts auch, ich verstehs auch nicht warum.
und die letzte version der checkimages die ich heute hochgeladen habe (V2.11) mit der gehts auch.

so und jetzt muß ich weitermachen, ich habe noch einen kleine überraschung betreffend diesen [MOD] für euch  :)

vielleicht werde ich heute noch fertig damit.

EDIT: ist sich nicht ganz ausgegangen.

so hier gehts zur exif felder suche:
http://www.4homepages.de/forum/index.php?topic=21053.new#new

mfg Andi

 
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 08, 2008, 09:53:23 AM
Hallo Rembrandt,
ich poste hier mal mein Versuch ein Plugin zu schreiben um die EXIF Daten der bestehenden Bilder in die Datenbank zu bekommen. Bei mir hat es funktioniert, aber dennoch Vorsicht. DATENBANK SICHERN!!!!!!
Dies ist mein erstes PHP Script!
Einfach in den plugin Ordner kopieren und dann unter ACP -> Plugins EXIF Check. Dieses Plugin durchsucht die Datenbank anhand der image_id und liest einige EXIF Daten aus und schreibt diese in die zugehörigen Tabellen! Es unterscheidet nicht zwischen PDF, MP3 oder JPG, daher erscheinen ab und an Fehlermeldungen bei Dateien wo keine EXIF Informationen verfügbar sind.

Vielleicht kann ja der ein oder andere PHP Zauberkünstler, ich weiss das es hier verdammt viele gibt, das Script Optimieren!!

Bitte nicht zu technische Fragen stellen, da ich ein absoluter Laie in Sachen PHP Programmierung bin. Das Script basiert auf der Grundlage von rebuild_search_index und einigen anderen PLUGINS an denen ich mich langgehangelt habe. Ich nutze eine Canon EOS 350D, deswegen bin ich mir nicht sicher, dass es auch mit EXIF Daten anderer Hersteller funktioniert!

Ihr müsst aber noch einige Änderungen an diesem MOD vornehmen!

Erweiterung der Datenbank
Code: [Select]
ALTER TABLE `4images_images`
ADD `image_ColorSpace` VARCHAR( 50 ) NOT NULL ;

 finde in /include/functions.php
Quote
  $exif_match['WhiteBalance'] = "WhiteBalance";
füge danach ein
Code: [Select]
  $exif_match['ColorSpace'] = "ColorSpace";
finde
Code: [Select]
elseif ($key == "WhiteBalance") {
if($exif_info == 0) {$WhiteBalance = "Automatisch";}
if($exif_info == 1) {$WhiteBalance = "Manuell";}
  $exif_array[$exif_match[$key]] = ($WhiteBalance);
}
füge danach ein

Code: [Select]
elseif ($key == "ColorSpace") {
if($exif_info == 0) {$ColorSpace = "sRGB";}
if($exif_info == 1) {$ColorSpace = "Adobe RGB";}
if($exif_info == 65535) {$ColorSpace = "Adobe RGB";}
  $exif_array[$exif_match[$key]] = ($ColorSpace);
}

finde in /includes/db_field_definitions.php
Code: [Select]
$additional_image_fields['image_WhiteBalance'] = array($lang['exif_WhiteBalance'], "text", 0);

füge danach ein:

Code: [Select]
$additional_image_fields['image_ColorSpace'] = array($lang['exif_ColorSpace'], "text", 0);

Ich hoffe das ich nun alles habe.

Gruß
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 08, 2008, 07:00:44 PM
Tag!

@rinaldos mein held, toll von dir das du das ausprobierst.

ich habe mal deine version etwas umgebaut, jetzt habe ich natürlich fehler drinnen  :?

zum ersten stimmt bei mir die html formatierung nicht mehr.
und zum zweiten,  ich bekomme beim SQL update eine fehlermeldung die ich mir nicht erklären kann.

beim ausführen des plugins kommt dieser DB fehler:
Code: [Select]
DB Error: Bad SQL Query: UPDATE 4images_images (image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength, image_ExposureBiasValue, image_ApertureValue, image_MaxApertureValue, image_MeteringMode, image_Flash, image_ExposureProgram, image_ExposureMode, image_WhiteBalance, image_GPSLatitude, image_GPSLatitudeRef, image_GPSLongitude, image_GPSLongitudeRef, image_GPSAltitude, image_GPSTrack ) VALUES ('Canon', 'Canon EOS 20D', '14.08.2005 09:39:20', '400', '1/400 Sekunde', 'F/4', '100 mm','0 EV', 'F/4', '', 'Selektiv', 'Blitz nicht ausgelöst', 'Zeitautomatik', '', '', '', '', '', '', '', '') WHERE image_id = 800
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_E'  at line 2
Processing image IMG 4027, ID 801 ...
aber wo zur hölle soll den der fehler jetzt sein, ich habe weder einen tabellennamen noch einen wert mit "image_E" , oder sehe ich da jetzt was falsch?

meine version von rinaldos exif_index.php:
(der code ist wirklich ein sauhaufen *rofl*, sorry)
Code: [Select]
<?php // PLUGIN_TITLE: EXIF Check


/*********************************************************
#  Dies Script ist mein erstes PHP Script
#  Es ist verbesserungs und optimierungsbedürftig.
#  Ich bitte die Fachleute doch dieses zu tun
#  Das Script liest die EXIF Daten aus den Bildern aus
#  und schreibt die Daten in die Datenbank.
#  Geschrieben für 4Images
#  Author: Ingo Randel
#  web: http://www.rinaldos-world.de
#  Datum 08.04.2008
#
********************************************************/
$nozip 1;
define('IN_CP'1);

$PHP_SELF = (isset($PHP_SELF)) ? $PHP_SELF $_SERVER['PHP_SELF'];
$root_path = (eregi("\/plugins\/"$PHP_SELF)) ? "./../../" "./../";
define('ROOT_PATH'$root_path);
require(
ROOT_PATH.'admin/admin_global.php');
include(
ROOT_PATH.'includes/search_utils.php');


if (
$action == "") {
  
$action "intro";
}
show_admin_header();
function 
next_step($batchstart$batchsize$autoredirect 0) {
  global 
$site_sess;
  
$page $site_sess->url("exif_index.php?action=buildsearchindex&batchstart=".$batchstart."&batchsize=".$batchsize."&autoredirect=".$autoredirect);
if (
$autoredirect) {
?>

<script language="javascript">
myvar = "";
timeout = 15;
function dorefresh() {
  window.status="Redirecting"+myvar;
  myvar = myvar + " .";
  timerID = setTimeout("dorefresh();", 100);
  if (timeout > 0) {
    timeout -= 1;
  }
  else {
    clearTimeout(timerID);
    window.status="";
    window.location="<?php echo $page?>";
  }
}
dorefresh();
</script>
<?php

}

?>


<br />
<table border="0" cellspacing="0" cellpadding="1">
  <tr>
    <td class="tableseparator">
      <table width="100%" border="0" cellspacing="0" cellpadding="3">
        <tr>
          <td class="tablerow2" align="center">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="<?php echo $page?>"><b>Click here to continue</b></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<br />
<?php 
}



if (
$action == "intro") {


  
show_form_header("exif_index.php""buildsearchindex");
  
  
show_input_row("Number of images to do per cycle""batchsize"1000);
  
show_input_row("Image ID to start at""batchstart"0);
  
show_radio_row("Include automatic JavaScript redirect to next page""autoredirect"0);
  
show_form_footer($lang['submit'], $lang['reset'], 2);
  echo 
"<p align=\"center\"><b>If you are reindexing, you may want to empty the indexes. ";
  echo 
"<a href=\"javascript:ConfirmEmptySearchindex()\">Click Here to do so!</a></b></p>";
}

if (
$action == "buildsearchindex") {
  if (isset(
$HTTP_GET_VARS['batchstart']) || isset($HTTP_POST_VARS['batchstart'])) {
    
$batchstart = (isset($HTTP_GET_VARS['batchstart'])) ? intval($HTTP_GET_VARS['batchstart']) : intval($HTTP_POST_VARS['batchstart']);
  }
  else {
    
$batchstart 0;
  }

  if (isset(
$HTTP_GET_VARS['batchsize']) || isset($HTTP_POST_VARS['batchsize'])) {
    
$batchsize = (isset($HTTP_GET_VARS['batchsize'])) ? intval($HTTP_GET_VARS['batchsize']) : intval($HTTP_POST_VARS['batchsize']);
    if (!
$batchsize) {
      
$batchsize 25;
    }
  }
  else {
    
$batchsize 50;
  }

  
$sql "SELECT MAX(image_id) as max
          FROM "
.IMAGES_TABLE;
  
$row $site_db->query_firstrow($sql);
  
$max = (isset($row['max'])) ? $row['max'] : 0;

  
$batchend $batchstart $batchsize 1;
  if (
$batchend >= $max) {
    
$batchend $max;
  }

  echo 
"<b>Fulltext Indexing between ID ".$batchstart." and ".$batchend.":</b><p>";

  
$sql "SELECT *
          FROM "
.IMAGES_TABLE."
          WHERE image_id
          BETWEEN 
$batchstart AND $batchend";
  
$result $site_db->query($sql);
  
$row $site_db->query_firstrow($sql);

$cat_id $result['cat_id'];
$image_id $result['image_id'];
$image_name $result['image_name'];
$image_comments $result['image_comments'];
$image_media_file $result['image_media_file'];
  while (
$row $site_db->fetch_array($result)) {
    
    echo 
"Processing image <b>".$row['image_name']."</b>, ID ".$row['image_id']." ...<br>";
    
$bild="$root_path"."/data/media/".$row['cat_id']."/".$row['image_media_file'];

 
 
$exif_data=exif_read_data($bild);
$exif_array get_exif_info($exif_data);{
foreach ($exif_array as $key => $val) {
          
if ($key == "Make") {
          
$Make $val;
        
}
if ($key == "Model") {
    $Model $val;
        
}
if ($key == "DateTimeOriginal") {
          
$DateTimeOriginal $val;
        
}
if ($key == "ISOSpeedRatings") {
          
$ISOSpeedRatings $val;
        
}
if ($key == "ExposureTime") {
    $ExposureTime $val;
        
}
if ($key == "FNumber") {
          
$FNumber $val;
        
}
if ($key == "FocalLength") {
    $FocalLength $val;
        
}
if ($key == "ExposureBiasValue") {
          
$ExposureBiasValue $val;
        
}
if ($key == "ApertureValue") {
    $ApertureValue $val;
        
}
if ($key == "MaxApertureValue") {
          
$MaxApertureValue $val;
        
}
if ($key == "MeteringMode") {
    $MeteringMode $val;
}
        
if ($key == "Flash") {
          
$Flash $val;
        
}
if ($key == "ExposureProgram") {
    $ExposureProgram $val;
        
}
if ($key == "ExposureMode") {
          
$ExposureMode $val;
        
}
if ($key == "WhiteBalance") {
    $WhiteBalance $val;
        
}
if ($key == "GPSLongitudeRef") {
$GPSLongitudeRef $val;
}
   if ($key == "GPSLatitudeRef") {
$GPSLatitudeRef $val;
}
if ($key == "GPSLongitude") {
          
$GPSLongitude substr (strrchr($val"("), 1);
          
$GPSLongitude substr ($GPSLongitude,0strlen($GPSLonigtude)-1);
          
}
          
if ($key == "GPSLatitude") {
          
$GPSLatitude substr (strrchr($val"("), 1);
          
$GPSLatitude substr ($GPSLatitude,0strlen($GPSLatitude)-1);
}
if ($key == "GPSAltitude") {
    $GPSAltitude $val;
        
}
if ($key == "GPSTrack") {
    $GPSTrack $val;
        
}
}
}
  




 
$sql "UPDATE ".IMAGES_TABLE."
                (image_Make, image_Model, image_DateTimeOriginal, image_ISOSpeedRatings, image_ExposureTime, image_FNumber, image_FocalLength, image_ExposureBiasValue, image_ApertureValue, image_MaxApertureValue, image_MeteringMode, image_Flash, image_ExposureProgram, image_ExposureMode, image_WhiteBalance, image_GPSLatitude, image_GPSLatitudeRef, image_GPSLongitude, image_GPSLongitudeRef, image_GPSAltitude, image_GPSTrack )
                VALUES
                ('
$Make', '$Model', '$DateTimeOriginal', '$ISOSpeedRatings', '$ExposureTime', '$FNumber', '$FocalLength','$ExposureBiasValue', '$ApertureValue', '$MaxApertureValue', '$MeteringMode', '$Flash', '$ExposureProgram', '$ExposureMode', '$WhiteBalance', '$GPSLatitude', '$GPSLatitudeRef', '$GPSLongitude', '$GPSLongitudeRef', '$GPSAltitude', '$GPSTrack')
WHERE image_id = 
$row[image_id]";
         
 
  
$row $site_db->query_firstrow($sql);

}
 
 
 }
  if (
$batchend $max) {
    
next_step($batchend 1$batchsize$autoredirect);
  }
  else {
    echo 
"<p><b>Exif index rebuilt!</b><p>\n";
    
show_text_link("Back""exif_index.php");
  }


show_admin_footer();

?>



mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on April 09, 2008, 08:35:20 AM
Hi Andi,
danke für die Überarbeitung. Da sich in der letzten Zeit an dem Projekt nichts getan hatte, habe ich selber etwas probiert. :-)


LG
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 09, 2008, 09:58:06 AM
Hi!

so ich habe es geschaft!!  :D :D :D

mit dem file "rebuild_exifindex.php" werden aus den bestehen bildern in der galerie die exfidaten ausgelesen und in die DB geschrieben.
mit der erweiterten suche aus diesen thread können dann alle bilder aus der galerie nach exif werten durchsucht werden.

das file habe ich im ersten post hochgeladen.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: Nicky on April 09, 2008, 10:33:17 AM
perfect :)

ändere nur noch in der rebuild_exifindex.php
die zeile 234
von
Code: [Select]
$sql = "UPDATE 4images_images SET

auf
Code: [Select]
$sql = "UPDATE ".IMAGES_TABLE." SET

dann ist perfect...

thx again!
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 09, 2008, 01:13:07 PM
Hi!

hm.. das hatte ich zuerst auch so gemacht , das script lief korrekt ab ohne eine fehlermeldung.
aber da wurden die tabellenfelder wurden nicht gefüllt.

ich vermute mal das mir da irgend etwas noch in der datei fehlt um die SQL anweisung  so zu schreiben.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: Nicky on April 09, 2008, 01:45:02 PM
mit
$sql = "UPDATE 4images_images SET
ging dies bei mir nicht..

da meine tabelle "4_176_images" heisst

config.php
$table_prefix = "4_176_";

nach exif rebuild mit
$sql = "UPDATE ".IMAGES_TABLE." SET
sind bei mir die felder gefüllt.
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 09, 2008, 02:34:56 PM
Hi!

@Nicky, ich habe das jetzt bei mir auch geändert und es scheint doch zu funktionieren.

keine ahnung warum das bei mir vorher nicht funktioniert hat, ich habe das jetzt auch in der rebuild_exifindex.zip geändert.

THX again!

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: XxJakeBluesxX on May 22, 2008, 01:07:30 PM
Dieser MOD erweitert die in der Version 1.7.6 enthaltene EXIF funktion um folgende Werte:
 
sorry hatte vergessen, ihr müßt noch die datenbank felder erweitern da es sonst zu fehlermeldungen kommt:
Code: [Select]
ALTER TABLE `4images_images`
ADD `image_Make` VARCHAR( 50 ) NOT NULL , 
ADD `image_Model` VARCHAR( 50 ) NOT NULL , 
ADD `image_DateTimeOriginal` VARCHAR( 50 ) NOT NULL , 
ADD `image_ISOSpeedRatings` VARCHAR( 20 ) NOT NULL ,   
ADD `image_ExposureTime` VARCHAR( 20 ) NOT NULL , 
ADD `image_FNumber` VARCHAR( 20 ) NOT NULL , 
ADD `image_FocalLength` VARCHAR( 20 ) NOT NULL , 
ADD `image_ExposureBiasValue` VARCHAR( 20 ) NOT NULL ,   
ADD `image_ApertureValue` VARCHAR( 20 ) NOT NULL , 
ADD `image_MaxApertureValue` VARCHAR( 20 ) NOT NULL , 
ADD `image_MeteringMode` VARCHAR( 50 ) NOT NULL , 
ADD `image_Flash` VARCHAR( 100 ) NOT NULL , 
ADD `image_ExposureProgram` VARCHAR( 50 ) NOT NULL , 
ADD `image_ExposureMode` VARCHAR( 50 ) NOT NULL , 
ADD `image_WhiteBalance` VARCHAR( 50 ) NOT NULL , 
ADD `image_GPSLatitude` VARCHAR( 20 ) NOT NULL , 
ADD `image_GPSLatitudeRef` VARCHAR( 20 ) NOT NULL , 
ADD `image_GPSLongitude` VARCHAR( 20 ) NOT NULL , 
ADD `image_GPSLongitudeRef` VARCHAR( 20 ) NOT NULL , 
ADD `image_GPSAltitude` VARCHAR( 20 ) NOT NULL ,
ADD `image_GPSTrack` VARCHAR( 20 ) NOT NULL ;

Geht's etwas genauer? Welche Datenbank Felder??? Und in welcher Datei stehen die drin?
Title: Re: [MOD] Exif V.1.7.6
Post by: mawenzi on May 22, 2008, 01:16:08 PM
... ich glaube genauer geht es nicht ... ;)
... wie oben zu lesen ...
Tabelle : 4images_images
Felder : image_Make, image_Model, image_DateTimeOriginal, ... u.s.w.

... am einfachsten mit dem Code von Rembrandt in PhpMyAdmin die 4images_images-Tabelle erweitern ...
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 22, 2008, 01:19:00 PM
Hi!

Geht's etwas genauer? Welche Datenbank Felder???
na in der MY SQL Datenbank diese datenbank felder zusätzlich anlegen.
alternativ kannst du dir die install_exif.php runterladen und im root ordner ausführen.

genau genug?

mfg Andi

Title: Re: [MOD] Exif V.1.7.6
Post by: XxJakeBluesxX on May 22, 2008, 01:31:03 PM
Danke, hat geklappt.

Sorry für meine Unwissenheit, aber besser vorher nachgefragt als hinterher geärgert...  :roll:

Edit:
Habe es wieder rückgänging gemacht da meine Galerie nach den Änderungen unerträglich langsam wurde...
Title: Re: [MOD] Exif V.1.7.6
Post by: ManuelW on June 20, 2008, 11:07:40 PM
hmm, ich finde schade, das die rebuild_exifinfo.php die IPTC Tags nicht mit ausliest.
Ich habe den Mod nun erst seit kurzem bei mir drin und hätte die Tags für die bereits vorhandenen
Bilder auch gern ausgelesen, oder gibts da nen Trick ?

Manu
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on June 20, 2008, 11:35:56 PM
Hi!
hmm, ich finde schade, das die rebuild_exifinfo.php die IPTC Tags nicht mit ausliest.
Ich habe den Mod nun erst seit kurzem bei mir drin und hätte die Tags für die bereits vorhandenen
Bilder auch gern ausgelesen, oder gibts da nen Trick ?

Manu
trick nicht, aber das gleiche in grün für die IPTCs:
http://www.4homepages.de/forum/index.php?topic=21141.msg114989#msg114989

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: SunnyUK on June 22, 2008, 05:38:07 PM
Great mod, Rembrandt. Thank you VERY much for sharing it! :)

I've found an upleasant error, though. In the rebuild_exifindex function, there's an overspill between iterations. If a file doesn't have EXIF data, rebuild_exifindex.php will assign it the exif data from the previous image.

The fix is edit the attached rebuild_exifindex.php and search for
Code: [Select]
while ($row = $site_db->fetch_array($result)) {
    echo "Processing image <b>".$row['image_name']."</b>, ID ".$row['image_id']." ...<br>";

After this insert
Code: [Select]
unset($Make);
unset($Model);
unset($DateTimeOriginal);
unset($ISOSpeedRatings);
unset($ExposureTime);
unset($FNumber);
unset($FocalLength);
unset($ExposureBiasValue);
unset($ApertureValue);
unset($MaxApertureValue);
unset($MeteringMode);
unset($Flash);
unset($ExposureProgram);
unset($ExposureMode);
unset($WhiteBalance);
unset($GPSLongitudeRef);
unset($GPSLatitudeRef);
unset($GPSLongitude);
unset($GPSLatitude);
unset($GPSAltitude);
unset($GPSTrack);
Title: Re: [MOD] Exif V.1.7.6
Post by: buuben on August 11, 2008, 12:11:46 AM
You got wrong syntax in english-lang file  :oops:

      elseif ($key == "Flash") {
      if($exif_info == 0) {$Flash = "No Flash"; )    <-- no curly brace
etc...

 should be:

      elseif ($key == "Flash") {
      if($exif_info == 0) {$Flash = "No Flash";}   
etc...

 :D
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on August 12, 2008, 06:43:31 AM
Hi!
...The fix is edit the attached rebuild_exifindex.php ...
You got wrong syntax in english-lang file  ...
...

THX  :D

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: SunnyUK on August 16, 2008, 05:56:28 PM
There's a bug (looks just like a simple cut and paste error) in functions.php where the GPSLongitude is calculated - this causes images taken east of Greenwhich and North of Equator to be stored (and hence shown on e.g. google maps) as if they were taken West of Greenwich.

To correct it:

In \includes\functions\php, find

Code: [Select]
          elseif ($key == "GPSLongitude") {
          $GPSLongitude_h = explode("/", $exif_info[0]);
          $GPSLongitude_m = explode("/", $exif_info[1]);
          $GPSLongitude_s = explode("/", $exif_info[2]);
       
          $GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
          $GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
          $GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
       
          $GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
       
          $exif_array[$exif_match[$key]] =  $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";

Replace this with

Code: [Select]
          elseif ($key == "GPSLongitude") {
          $GPSLongitude_h = explode("/", $exif_info[0]);
          $GPSLongitude_m = explode("/", $exif_info[1]);
          $GPSLongitude_s = explode("/", $exif_info[2]);
       
          $GPSLong_h = $GPSLongitude_h[0] / $GPSLongitude_h[1];
          $GPSLong_m = $GPSLongitude_m[0] / $GPSLongitude_m[1];
          $GPSLong_s = $GPSLongitude_s[0] / $GPSLongitude_s[1];
       
          $GPSLongGrad = $GPSLongfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
       
          $exif_array[$exif_match[$key]] =  $GPSLongitudeRef . " " . $GPSLong_h . "° ". $GPSLong_m . "' " . $GPSLong_s . "'' ($GPSLongGrad)";

(I can't figure out how to colour the code, but the important bit is the 2nd to last line where the original code references $GPSLatfaktor which should have been $GPSLongfaktor.
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on August 16, 2008, 07:27:00 PM
There's a bug (looks just like a simple cut and paste error) in functions.php where the GPSLongitude is calculated ...
Code: [Select]
$GPSLongGrad = $GPSLatfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);

Replace this with

Code: [Select]
$GPSLongGrad = $GPSLongfaktor * ($GPSLong_h + ($GPSLong_m + ($GPSLong_s / 60))/60);
...

THX again.. its in the first post fixed

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: ucladidas on March 27, 2009, 06:26:28 PM
Hi,

I'm having issues making this MOD work. 

1.) When I check new images, the additional db fields (i.e., Make, Model, etc.) do not automatically populate with the relevant vaules

2.) When I try to add images via Check New Images, I get a DB error

3.) When I try to run the rebuild exif plugin, it says that it can't find the file even though I uploaded it into the admin/plugins folder

Any ideas?  Thanks
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 12, 2009, 08:12:20 PM
.....
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on May 12, 2009, 10:07:28 PM
Hi
ist dieser Rundungsfehler auch hier drin?
http://www.4homepages.de/forum/index.php?topic=11072.msg58059#msg58059

wenn ja, wie sollte ich denn siw exif.php anpassen?

insbesondere den Teil:

case "ExposureTime":
$exposure_time=explode("/",$val);
if ($exposure_time[0]>0)  {
$exposure_time[1] = round($exposure_time[1]/$exposure_time[0]);
$exposure_time[0] = $exposure_time[0]/$exposure_time[0];}
$val = $exposure_time[0]."/".$exposure_time[1]." Sekunde";
break;


Gruß
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 12, 2009, 10:16:49 PM
...
ist dieser Rundungsfehler auch hier drin?...
Hi, Ingo

nein da ist er nicht drinnen, im gegenteil ich habe den code genommen und für den neuen mod verwendet.  :mrgreen:

der rundungsfehler zeigte sich bei divisionen bei den eine periodische zahl raus kam.
der wert war zwar grundsätzlich richtig nur wurde er nicht korrekt angezeigt, statt einer z.b. 1/6 sekunde wurden 1/6666666666667 sekunden angezeigt.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on May 12, 2009, 10:25:59 PM
Ok, aber bei Langzeitbelichtungen steht hier 1/0 Sekunde obwohl das Bild 15 Sekunden belichtet hat :-)

hier das Bild:
http://rinaldos.homeip.net/img8396.htm?l=deutsch
Hab dir gerade mal das Bild in Originalgrösse via Mail zugeschickt.....

Gruß




Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 12, 2009, 10:37:29 PM
THX fürs bild!
ach du schei... :oops:
ich werde mir das morgen nochmal ansehn, das heisst ja dann das der fehler auch schon im alten mod vorhanden war..

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on May 12, 2009, 10:39:51 PM
Ist mir auch nur gerade aufgefallen, weil du es explizit beschrieben hattest, sonst schaue ich mir dir EXIF Daten auch nicht so oft an :-)

Gruß
Ingo

Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 13, 2009, 10:00:54 AM
Hi!

so.. ich denke ich habe es.

für den alten mod exif v0.3
Quote
case "ExposureTime":
$exposure_time=explode("/",$val);
if(($ExposureTime[0] == 1) & ($ExposureTime[1] == 1) ){
$exif_array[$exif_match[$key]] = $ExposureTime[1]." Sekunde";
}
elseif(($exposure_time[0] == 1)){
$val = "1/".($exposure_time[1] * $exposure_time[0])." Sekunde";
}
elseif(($exposure_time[1] > 1)){
$val = ($exposure_time[0] / $exposure_time[1])." Sekunden";
}
elseif(($exposure_time[1] == 1)){
$val = ($exposure_time[0] * $exposure_time[1])." Sekunden";
}
break;

und für den neuen mod exif V 1.7.6
Quote
elseif ($key == "ExposureTime") {
$ExposureTime = explode("/", $exif_info);
if(($ExposureTime[0] == 1) & ($ExposureTime[1] == 1) ){
$exif_array[$exif_match[$key]] = $ExposureTime[1]." Sekunde";
}
elseif(($ExposureTime[0] == 1)){
$exif_array[$exif_match[$key]] = "1/".($ExposureTime[1] * $ExposureTime[0])." Sekunde";
}
 elseif(($ExposureTime[1] > 1)){
$exif_array[$exif_match[$key]] = ($ExposureTime[0]/$ExposureTime[1])." Sekunden";
}
elseif(($ExposureTime[1] ==1 )){
$exif_array[$exif_match[$key]] = ($ExposureTime[0] * $ExposureTime[1])." Sekunden";
}
}

vielleicht könnt ihr das bitte nochmal testen.

EDIT: sowie es aussieht ist der exposure bug auch in der original  4images V.1.7.6 b.z.w. 1.7.7

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: rinaldos on May 13, 2009, 05:53:56 PM
Hi Andi,
danke für den schnellen Support, klappt gut, nun sind auch 15 Sekunden 15 Sekunden :-)

Klappt mit dem alten Mod einwandfrei :-) Ich nutze den alten MOD, da ich dadurch die EXIF Daten auslagern kann, das heisst, über ein seperaten Button abfragen kann :-)

Gruß
Ingo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 13, 2009, 06:29:42 PM
Hi!

Danke fürs testen!
ich bin draufgekommen das die meissten progs wie irfanview, exfviewer,photome,. e.t.c
die exposure zeiten im bereich zwischen 1/4 und 1 sekunde eigentlich falsch darstellen.

 was soll den bitte z.b. eine 1/2.5 sekunde für eine verschluss zeit sein?  :)

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: honda2000 on May 14, 2009, 08:14:28 AM
1/2.5 soll 2,5sec sein, die kommt bei mir nach: 2,0 und vor 3,2 also 1/2.0 und 1/3.2 und sind vollkommen normale Verschlusszeiten an DSLR-kameras!
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on May 14, 2009, 05:33:06 PM
Hi!
1/2.5 soll 2,5sec sein, ...
1/2.5 ist bz.w. sind  0,4 sekunden, und darum geht es mir, die werte werden eigentlich falsch dargestellt.

wenn du dir mal den code der original 4img V1.7.6 ansiehst wirst du sehn das es so gar nicht möglich ist die verschlusszeit richtig darzustellen.
ein bild mit 15sec. belichtungszeit würde mit 1/15 dargestellt werden.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: celkee on June 19, 2009, 02:10:34 PM
Hallo,

ist vielleicht wichtig!!

PHP 5.2.10 ist nach 2 Release Candidates fertig. Diese Version ist ein Mainteinance-Release, in dem es darum ging, Bugs zu fixen und PHP stabiler zu machen. So wurden über 100 Bugs beseitigt, von denen der "gefährlichste" eine Sicherheitslücke in exif_read_data() !!!
war.

Title: Re: [MOD] Exif V.1.7.6
Post by: apaunganhote on October 19, 2009, 09:15:40 AM
I just installed this mod and I am not clear with the following problem.

1. Do we need to run EXIF Index from admin panel everytime, whenever we upload new images ?

Because currently, when i upload image using Imagemagick, it doesn't add EXIF data to the database. I have to go to admin panel and update everytime. I think i did something wrong right ?
Title: Re: [MOD] Exif V.1.7.6
Post by: apaunganhote on October 20, 2009, 03:57:59 PM
anyone?  :(
Title: Re: [MOD] Exif V.1.7.6
Post by: V@no on October 20, 2009, 05:16:30 PM
It seems this mod only updates database via ACP
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on October 20, 2009, 08:34:16 PM
It seems this mod only updates database via ACP
to time yes, but next week would i add a member plugin

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: apaunganhote on October 21, 2009, 02:54:50 AM
V@no and Andi,

Thanks much! I will be looking forward to have member functions :)
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on October 25, 2009, 06:55:44 PM
Hi!
....
I will be looking forward to have member functions :)

DONE, and many code updates and new files.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: alekseyn1 on March 23, 2010, 07:05:02 PM
Guys!

Thanks for a great mod.

I am trying to get away from ImageMagic since one image out of 100 hangs my server.... nobody knows why.
It works fine with GD... but the EXIF is gone then... and it's important for me.

So I have decided to install this MOD on my 1.7.7 .... and have a few problems with it:

1. The headings are not being picked up correctly in the EXIF block... plus the columns are shifted be one line ... see attached image.
2. I am using the auto resize mod as well and I thought if I put the EXIF mod code before the auto-resizer in member.php, it would pick up the info and save it in the database... but it does not... it only works with ImageMagic and not working with GD...... what am I missing?

Thanks for any hints in advance.
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on March 24, 2010, 05:42:30 AM
Hi!

in your example the field name is not right.
the fieldname are original, without "image_"
I miss the field "make" at the top

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: alekseyn1 on March 24, 2010, 02:40:29 PM
Hi!

in your example the field name is not right.
the fieldname are original, without "image_"
I miss the field "make" at the top

mfg Andi

Thanks Rembrandt for your answer.

My problem is that this part of the code does not work for some reason:

Code: [Select]
             "exif_name" => $lang['exif_'.$key],
if I just do

Code: [Select]
             "exif_name" => $key,
Then all is fine but in english language... and even the shifting is gone.... but if I keep the original code the same situation as indicated in my previous post attachment....

 :? :? :?
Title: Re: [MOD] Exif V.1.7.6
Post by: alekseyn1 on May 30, 2010, 03:56:18 PM
1. The headings are not being picked up correctly in the EXIF block... plus the columns are shifted be one line ... see attached image.

Ok, this problem is fixed by making some code entries (step 3 and 4... for some reason $lang variable was not being picked up when uppercase characters were present) in lowercase and modifying the code in functions.php like so (step 2):

Code: [Select]
if ($detailed_view && $image_info[2] == 2){
       global $site_db,$lang;

$sql = "SELECT image_make, image_model, image_datetimeoriginal, image_isospeedratings, image_exposuretime, image_fnumber, image_focallength, image_exposurebiasvalue, image_aperturevalue, image_maxaperturevalue,
                 image_meteringmode, image_flash, image_exposureprogram, image_exposuremode, image_whitebalance, image_gpslatitude, image_gpslatituderef, image_gpslongitude, image_gpslongituderef, image_gpsaltitude,
                 image_gpstrack
                 FROM ".IMAGES_TABLE."
                 WHERE image_id = '$image_id'";

$result = $site_db->query($sql);

$row = mysql_fetch_object($result);   

$bgcounter = 0;
         
 foreach ($row as $key => $val) {             

if ($val != "") {

$key = str_replace('image_','',$key);

          if (($key != "gpslongituderef") &&  ($key != "gpslatituderef")) {
          if ($key == "gpslongitude") {
$GPSLongtude = substr (strrchr($val, "("), 1);
$GPSLongtude = substr ($GPSLongtude,0, strlen($GPSLongtude)-1);
}
          if ($key == "gpslatitude") {
$GPSLatitude = substr (strrchr($val, "("), 1);
$GPSLatitude = substr ($GPSLatitude,0, strlen($GPSLatitude)-1);


        $row_bg_number = ($bgcounter++ % 2 == 0) ? 1 : 2;
            $site_template->register_vars(array(
               "exif_value" => format_text($val, 1),
               "exif_name" => $lang['exif_'.$key],
   "row_bg_number" => $row_bg_number
            ));
            $exif_info2 .= $site_template->parse_template("exif_bit");
           } // GPS
          } //end val
        }  // end foreach
     } // Exif aus DB
 }
}
//################################# End Exif aus DB #################################################################
Title: Re: [MOD] Exif V.1.7.6
Post by: SaFo on June 02, 2010, 10:14:45 AM
Hallo Andi,

ich habe die Änderungen nun wie hier beschrieben durchgeführt, hochgeladen und habe dann die install_exif.php ausgeführt. Dann kam folgende Fehlerfeldung:

Parse error: syntax error, unexpected T_DOUBLE_ARROW in /pages/09/01/d0012773/home/htdocs/www/dfrsd.de/bilderarchiv/includes/functions.php on line 703

Hier ist der Code aus dieser Zeile:
Code: [Select]
     "media_src" => $media_src,

Was könnte dies sein?

Als Anhang die functions.php

Grüße
Safo
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on June 03, 2010, 05:48:36 PM
dein fehler ist in zeile 702:
//################################# End Exif aus DB #############################    $site_template->register_vars(array(
      "media_src" => $media_src,
das muss so lauten:
//################################# End Exif aus DB #############################   
$site_template->register_vars(array(
      "media_src" => $media_src,

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 07, 2010, 11:45:54 AM
Hallo
...
und für den neuen mod exif V 1.7.6
Quote
elseif ($key == "ExposureTime") {
$ExposureTime = explode("/", $exif_info);
if(($ExposureTime[0] == 1) & ($ExposureTime[1] == 1) ){
$exif_array[$exif_match[$key]] = $ExposureTime[1]." Sekunde";
}
elseif(($ExposureTime[0] == 1)){
$exif_array[$exif_match[$key]] = "1/".($ExposureTime[1] * $ExposureTime[0])." Sekunde";
}
 elseif(($ExposureTime[1] > 1)){
$exif_array[$exif_match[$key]] = ($ExposureTime[0]/$ExposureTime[1])." Sekunden";
}
elseif(($ExposureTime[1] ==1 )){
$exif_array[$exif_match[$key]] = ($ExposureTime[0] * $ExposureTime[1])." Sekunden";
}
}

vielleicht könnt ihr das bitte nochmal testen.
ich krame das nochmals raus, denn einige Werte bleiben bei mir in der Darstellung falsch.
Betrifft aktuell Zeiten von 1/30,  1/60 und

In den Variablen $ExposureTime[0] wird eine 10, in $ExposureTime[1] eine 600 eingelesen und das Ergebnis wird 0.016666666666667.
Exifer, xnview etc. weisen 1/60 aus.

Ich habe mir mal in die "Update_EXIF_Index.php" einige Ausgaben notiert und dann sieht das bspw. so aus:
Code: [Select]
25
1000
0.025 sec(s)
125
10000
0.0125 sec(s)
10
300
0.033333333333333 sec(s)
10
600
0.01666666666666 sec(s)
10
40
0.25 sec(s)
1
100
1/100 sec(s)
10
50
0.2 sec(s)
$ExposureTime[0]
$ExposureTime[1]
$exif_array[$exif_match[$key]]

Gebe gern Zugriff auf die Seite oder weiteres per PN bzw. hier.
Hatte mir schon händisch einige "Brücken" für 10/300 etc. gebastelt, aber IMO macht das so ja keinen Sinn  :|

Danke!
Henry

Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 07, 2010, 02:36:31 PM
...
wie stehen den bei den betreffenden bilder die werte in der DB, als dezimal oder als bruch?
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 07, 2010, 02:58:48 PM
Hallo Andi,
wie stehen den bei den betreffenden bilder die werte in der DB, als dezimal oder als bruch?
je nachdem  :| siehe Screen unten.

Habe mir die in der functions.php stehenden Eventualitäten für "ExposureTime" auch mal mit auswerfen lassen (mit a, b, c ...)
Code: [Select]
        elseif ($key == "ExposureTime") {
                $ExposureTime = explode("/", $exif_info);
echo "<br>".$ExposureTime[0]." ";
echo "<br>".$ExposureTime[1]." ";
        if(($ExposureTime[0] == 1) & ($ExposureTime[1] == 1) ){
            $exif_array[$exif_match[$key]] = $ExposureTime[1]." Sekunde";
echo "<br>a<br>".$exif_array[$exif_match[$key]];
            }
        elseif(($ExposureTime[0] == 1)){
                $exif_array[$exif_match[$key]] = "1/".($ExposureTime[1] * $ExposureTime[0])." Sekunde";
echo "<br>b<br>".$exif_array[$exif_match[$key]];
                }
        elseif(($ExposureTime[1] > 1)){
                $exif_array[$exif_match[$key]] = ($ExposureTime[0]/$ExposureTime[1])." Sekunden";
echo "<br>c<br>".$exif_array[$exif_match[$key]];
                }
        elseif(($ExposureTime[1] == 1 )){
                $exif_array[$exif_match[$key]] = ($ExposureTime[0] * $ExposureTime[1])." Sekunden";
echo "<br>d<br>".$exif_array[$exif_match[$key]];
                }

        }

 und es wird auch insoweit die richtige elseif-Bedingung verwendet.

Danke!
Henry
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 07, 2010, 03:11:53 PM
da stimmen aber einige belichtungszeiten nicht.
lösche einmal manuel bei einem der betreffenden bilder die belichtungszeit, und führe danach die exif_rebuild nochmal aus.
das muß als bruch drinnen stehn und nicht als dezimalzahl.
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 07, 2010, 03:33:17 PM
Hallo Andi,
da stimmen aber einige belichtungszeiten nicht.
lösche einmal manuel bei einem der betreffenden bilder die belichtungszeit, und führe danach die exif_rebuild nochmal aus.
das muß als bruch drinnen stehn und nicht als dezimalzahl.
:?
Habe Deine Schritte gemacht, aber genau das ist doch das Problem: weder im Checkimages, noch mittels des exif_rebuild werden die Daten korrekt ermittelt. Ich füge mal eines der Bilder (nur die Größe reduziert) im Original an. Meine aktuelle functions.php auch

Bis gleich & Danke,
Henry

Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 07, 2010, 03:46:41 PM
@henary, ich denke da ist ein fehler drinnen, nur verstehe ich nicht warum mir das nie aufgefallen ist b.z.w. warum der fehler bei all meinen galerien nie aufgetaucht ist.
oder mir ist bei all dem copy&paste was verloren gegangen.  :?

so ich habe vorerst einmal eine lösung,
 ich würde dich bitten diese änderung einmal durchzuführen, und danach die rebuild exif nochmals auszuführen.
suche in den code:
       elseif(($ExposureTime[0] == 1)){
                $exif_array[$exif_match[$key]] = "1/".($ExposureTime[1] * $ExposureTime[0])." sec(s)";
                }

und füge darunter ein:
elseif(($ExposureTime[0] > 1)){
                $exif_array[$exif_match[$key]] = "1/".round($ExposureTime[1]/$ExposureTime[0])." sec(s)";
                }


passieren kann nichts ausser das es vielleicht woanders dann hakt.

mfg Andi


edit: eh klar eine nikon, (nur probleme)  :mrgreen:
dürfte tatsächlich ein unterschied zw. den herstellern geben, in meiner galerie sind alle werte korrekt eingetragen.
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 07, 2010, 04:16:00 PM
Hallo Andi,
@henary, ich denke da ist ein fehler drinnen, nur verstehe ich nicht warum mir das nie aufgefallen ist b.z.w. warum der fehler bei all meinen galerien nie aufgetaucht ist.
oder mir ist bei all dem copy&paste was verloren gegangen.  :?

so ich habe vorerst einmal eine lösung,
 ich würde dich bitten diese änderung einmal durchzuführen, und danach die rebuild exif nochmals auszuführen.
suche in den code
...

passieren kann nichts ausser das es vielleicht woanders dann hakt.

mfg Andi

brilliant! Klappt sehr fein, siehe Screen in der Anlage. Der neue Code-Schnipsel erzeugte die "sec(s)"-Einträge, das passe ich noch an  :wink:


eh klar eine nikon, (nur probleme)  :mrgreen:
dürfte tatsächlich ein unterschied zw. den herstellern geben, in meiner galerie sind alle werte korrekt eingetragen.

Vermutlich hast Du recht, daß es "nur" an den krummen Werten der Nikon liegt - das prüfe ich nochmal, kann ja nun die weitere Code-Zeile von Dir immer mal Ein- und Ausschalten.

Nochmals vielen Dank!
Henry
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 07, 2010, 04:18:20 PM
....
Vermutlich hast Du recht, daß es "nur" an den krummen Werten der Nikon liegt - das prüfe ich nochmal, kann ja nun die weitere Code-Zeile von Dir immer mal Ein- und Ausschalten.
...
ich danke dir für deine geduld und fürs testen.  :D
wenn dir nochwas auffällt gib bitte bescheid.
 ich werde in den nächsten tagen den mod überarbeiten, seit der V.1.7.9 kann einiges in den code wegfallen.


mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: x23piracy on December 07, 2010, 04:59:15 PM
Hi,

sehe ich das richtig im ersten Post... Bilingual?
Soll ich mal den Rest übersetzen?

Prima das du den überarbeiten willst  :thumbup: dann warte ich bis das passiert ist.


Gruß Jens
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 07, 2010, 05:22:15 PM
Hallo Andi,

ich danke dir für deine geduld und fürs testen.  :D
wenn dir nochwas auffällt gib bitte bescheid.
 ich werde in den nächsten tagen den mod überarbeiten, seit der V.1.7.9 kann einiges in den code wegfallen.


mfg Andi
habe nochmals rd. 300 Bilder auch von anderen Cam's getestet. Bspw. ist eine "Sony DSC-W50" auch uncool gewesen  :?
Canon, Pentax, Casio ... was ich hier so an Pix gerade finden konnte war bisher schon unauffällig.

Denke daher, daß der Code so perfekt ist, auch für Sony & Nikon  :mrgreen:

Zu der Code-Überarbeitung melde ich mich schon mal als Proband an  :wink:

Willst Du auch funktional ändern/erweitern oder nur optimieren?

Bis später,
Henry
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 07, 2010, 05:24:07 PM
..sehe ich das richtig im ersten Post... Bilingual?
Soll ich mal den Rest übersetzen?
...
Bilingual is gut  :mrgreen:
wörtlich übersetzt würde z.b. ja "return light not detected" "zurücklicht nicht erkannt" bedeuten.
das ist aber kompletter schwachsinn, ich nehme mal an das dass damit gemeint ist " messblitz nicht erkannt".
ich dachte halt damals, bevor ich einen schwachsinn übersetze lasse ich es so wie es ist, ist halt genauso sch....

@henary, eigentlich nur optimieren, es gäbe zwar noch x andere exifdaten aber die machen nicht wirklich einen sinn.
Title: Re: [MOD] Exif V.1.7.6
Post by: x23piracy on December 07, 2010, 06:23:56 PM
Hi,

wer hat denn jetzt hier bitte die letzten Beiträge Kommentarlos gelöscht?
Pfff... warst du das Andi?


Gruß Jens
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 07, 2010, 07:08:01 PM
jetzt ist hier schluss mit den "off topic" hier kannst du alles weitere schreiben
http://www.4homepages.de/forum/index.php?topic=28491.0
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 07, 2010, 08:31:03 PM
Hallo Andi,
@henary, eigentlich nur optimieren, es gäbe zwar noch x andere exifdaten aber die machen nicht wirklich einen sinn.
weitere Exif-Daten machen IMO auch keinen Nutzen, zudem kann das jeder nach Belieben selbst anfrickeln  :wink:

Deine Umsetzung zur Verwendung des "big"-Files habe ich etwas modifiziert, weil ich die pauschale Verwendung des Download-Files zur Exif-Analyse so nicht praktisch für mich ist. Meine (gebastelte) Lösung sieht so aus, daß die Datei im "big"-Folder nur dann verwendet wird, wenn die normale Image-Datei kein Exif beinhaltet.
Sinn der Aktion ist einerseits eine ggf. flottere Bearbeitung/weniger Serverlast aber viel mehr ein praktischer Grund: Viele Bilder kommen per Mailupload oder FTP und wenn ich dann einige Anpassungen an Exif etc. machen muß (bspw. Datum- und Uhrzeitkorrektur, GPS nachtragen) brauche ich diese nur an den Image_Files machen und im Download nicht extra hunderte Dateien zu schieben. Weil die Download-Dateien letztlich eher dem Ausbelichten durch "Anwender" dienen, spielen die dann nicht korrekten Exif-Daten keine Rolle  :wink:

Wie ich das in der Update_EXIF_Index.php gelöst  habe:

Code: [Select]
    if (file_exists($big_file)){
      $bild = MEDIA_PATH."/".$row['cat_id']."/".$big_folder."/".$row['image_media_file'];
     }
     else{
      $bild= MEDIA_PATH."/".$row['cat_id']."/".$row['image_media_file'];
     }
komplett entfernen.

Code: [Select]
unset($GPSTrack);

$exif_data=@exif_read_data($bild);
$exif_array = get_exif_info($exif_data);
  if(empty($exif_array)){
echo "No...EXIF.........<b>".$row['image_name']."</b>, ID ".$row['image_id']." ...<br>";
   }
  if (file_exists($big_file)){
    echo "Read EXIF from Folder  \" ".$big_folder." \"  <b> ".$row['image_name']."</b>, ID ".$row['image_id']." ...<br>";
  }
else{
    foreach ($exif_array as $key => $val) {
ersetzen mit:
Code: [Select]
unset($GPSTrack);

$bild = MEDIA_PATH."/".$row['cat_id']."/".$row['image_media_file'];
$exif_data=@exif_read_data($bild);
$exif_array = get_exif_info($exif_data);
  if(empty($exif_array)){
if (file_exists($big_file)){
    echo "Read EXIF from Folder  \" ".$big_folder." \"  <b> ".$row['image_name']."</b>, ID ".$row['image_id']." ...<br>";
      $bild = MEDIA_PATH."/".$row['cat_id']."/".$big_folder."/".$row['image_media_file'];
$exif_data=@exif_read_data($bild);
$exif_array = get_exif_info($exif_data);
  }
else{
echo "No...EXIF.........<b>".$row['image_name']."</b>, ID ".$row['image_id']." ...<br>";
  }
   }
    foreach ($exif_array as $key => $val) {

Code: [Select]
if ($key == "GPSTrack") {$GPSTrack = $val;}
}
}
ersetzen mit:
Code: [Select]
if ($key == "GPSTrack") {$GPSTrack = $val;}
}

Bis später,
Henry
 
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 08, 2010, 06:22:31 AM
....Meine (gebastelte) Lösung sieht so aus, daß die Datei im "big"-Folder nur dann verwendet wird, wenn die normale Image-Datei kein Exif beinhaltet. ....
genauso so funktioniert der mod ja auch...

Quote
.....Wie ich das in der Update_EXIF_Index.php gelöst  habe:
die Update_EXIF_Index.php datei ist ja nur für die bilder gedacht die schon vor den exif mod in der galerie waren,
eben um  die daten deren bilder exifdaten enthalten egal ob big oder normal, in die datenbank zu bekommen.

wenn der mod schon eingebaut ist brauchst du diese datei nicht mehr.
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 08, 2010, 08:17:52 AM
Hallo Andi,
....Meine (gebastelte) Lösung sieht so aus, daß die Datei im "big"-Folder nur dann verwendet wird, wenn die normale Image-Datei kein Exif beinhaltet. ....
genauso so funktioniert der mod ja auch...

Sicher? Du setzt doch oben bereits die variable $bild und das allein auf der Basis, daß der big-Ordner nutzbar ist. IMO wird doch keine Prüfung durchgeführt, ob tatsächlich im Image_File Exif vorliegt?

die Update_EXIF_Index.php datei ist ja nur für die bilder gedacht die schon vor den exif mod in der galerie waren,
eben um  die daten deren bilder exifdaten enthalten egal ob big oder normal, in die datenbank zu bekommen.

wenn der mod schon eingebaut ist brauchst du diese datei nicht mehr.
Richtig, außer, man schiebt nachträglich neue Versionen auf den Image_ordner  :wink:
Zudem habe ich diese Anpassung auch im Checkimages vorgenommen, so daß selbst bei Verwenduing von "GD Bibliothek" bei einem fremden 4images das Exif-Auslesen geht, ansonsten aber eben das image_file verwendet wird.

Aber egal, das war hier nur so ein Gedanke  :wink:


Ansonsten grüble ich schon eine Weile über folgende Modifikation:

Bisher steht im 4images image_date für das Aktivierungsdatum und ggf. das Exif_Originaldatum zur Verfügung. Ich schreibe schon länger in das image_date immer auch das exif_datum (damit bspw. die von-bis-Suche gleich nutzbar bleibt) und habe zus. eine Variable image_upload_date (was letztlich das Aktivierungsdatum ist und die werte ich u.a. für "new Images" aus). Beides eignet sich ganz gut zur chronologischen Sortierung.
Wenn aber Bilder von fremden Cameras/Anwendern kommen, stimmen meist die Daten im Exif nicht genau. Für eine exakte Chronologie muß ich daher die Exif-Daten immer erst patchen und die Bilder wieder hochladen. Aufwendig und nervig.
Die Lösung wäre, wenn ich den Zeitoffset einmal ermittle uns bspw. im Checkimages direkt mit eingeben kann, dann das image_date aus dem Exif +/- diesem Offset erzeugt wird. Im Idelafall ist nix zu tun, ansonsten hat man eben in der Datei ein "falsches" Exif-Datum, aber in der DB ein exaktes Sortierkriterium resp. logisches Suchfeld.

Ich bin dabei, das *neben* dem Mod als Zusatz zu basteln, werde das aber allein wohl nicht hinbekommen - es hängt bei mir letztlich "nur" an der Möglichkeit innerhalb des checkimages mit den Variablen zu hantieren (wie bspw. hier: http://www.4homepages.de/forum/index.php?topic=4754.msg153479#msg153479 zu lesen). Und der Code müßte dann ggf. etwas gehübscht werden, ich bin da nur ein pragmatischer Schreiber  :wink:

Bis später,
Henry
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 08, 2010, 08:30:31 AM
....
Sicher? Du setzt doch oben bereits die variable $bild und das allein auf der Basis, daß der big-Ordner nutzbar ist. IMO wird doch keine Prüfung durchgeführt, ob tatsächlich im Image_File Exif vorliegt?
....

wenn über die checkimages ein bild in den big ordner verschoben wird und ein bild per GD verkleinert wird können die exif nur mehr in dem big sein.
dieses wird ausgelesen und in die DB geschrieben.
gibt es kein bild im Big kann es nur im media ordner sein und dann werden die exif eben von dort ausgelesen und in die DB geschrieben.
Title: Re: [MOD] Exif V.1.7.6
Post by: henary on December 08, 2010, 04:13:59 PM
Hallo Andi,

habe noch eine Problemstelle gefunden: Bilder von einer Mobiltelefon-Camera (Sony Ericsson K800i), erweitert um IPTC-Daten werden nicht korrekt eingelesen  :( Die EXIF-Felder "Make" und "Model" gehen verloren und es werden unschlüssige Textpassagen aus dem IPTC gelesen.

Quertest mit XNVIEW etc. zeigt alles korrekt.

Die Daten werden aber vermutlich durch die read_exif_data nicht richtig gelesen, habe mal mit

<?php
 echo "<p><img border=\"0\" src=\"20100620_10-57-36.jpg\" width=\"100\"></p>";
 $exif = read_exif_data ('20100620_10-57-36.jpg');
 while(list($k,$v)=each($exif)) {
   echo "$k: $v<br>\n";
 }

?>
auslesen lassen und dort fehlen die beiden Variablen  :x

Habe Dir mal ein Pix angehängt. Hast Du eine Idee? Sonst müßte man so was wenigstens irgendwie abfangen. Besser sind die Felder leer, als daß dort unsinniges steht.

Bis später,
Henry

EDIT:
Habe heute noch weitere Effekte gefunden: Camera "Panasonic DMC-T27". Es spielt keine Rolle, ob IPTC-Daten in den Bildern sind, habe das in verschiedenen Varianten probiert. Offenbar sind also mind. bei dem Vorgenannten Handy-Cam und der Panasonic die Daten anders abgelegt. Füge auch dazu mal ein Pix an.

Welche EXIF Versionen gibt es serverseitig? Bei mir (Rootserver) läuft unter Apache PHP Version 5.2.6 mit EXIF Version    1.4 $Id: exif.c,v 1.173.2.5.2.25 2008/03/12 17:33:14 iliaa Exp $

Bis später,
Henry
Title: Re: [MOD] Exif V.1.7.6
Post by: MrAndrew on February 16, 2011, 08:17:38 PM
Is it possible to use this MOD with image annotation MOD and GD library???
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on February 16, 2011, 08:32:17 PM
Is it possible to use this MOD with image annotation MOD and GD library???
the GD library removed all IPTC and EXIF datas
Title: Re: [MOD] Exif V.1.7.6
Post by: mawenzi on February 16, 2011, 08:46:35 PM
Is it possible to use this MOD with image annotation MOD and GD library???

... yes ...
... as rembrandt said, the GD library for image annotation removed all iptc- and exif-datas, so a solution is maybe ...
... by storing of the original image in the big-folder and reading of the iptc- and exif-infos from these images ...
... a example with MOD image annotation and MOD exif info ... here (http://klick.kl.funpic.de/details.php?image_id=5003) ...

... and also this solution is possible ...
... by storing of iptc- and exif-infos in the database and reading of the infos from the database ...
... the modification for this : EXIF V.1.7.6 Suchfelder Erweiterung -> http://www.4homepages.de/forum/index.php?topic=21053.0 ...
Title: Re: [MOD] Exif V.1.7.6
Post by: MrAndrew on April 04, 2011, 10:42:28 AM
Ok, my database have exif info, but tags:

Code: [Select]
{if exif_info}
<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">EXIF Info</td>
                          </tr>
                          {exif_info}
                        </table>
                      </td>
                    </tr>
                  </table>
                  {endif exif_info}

Doesn`t work and nothing show me... Why?
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 04, 2011, 12:50:47 PM
step 3.) have you done?
Title: Re: [MOD] Exif V.1.7.6
Post by: MrAndrew on April 04, 2011, 02:39:53 PM
Sure. Step 3 have been done and checked again!

When i editing image, i see EXIF, but on details page, only two words: "EXIF Info"
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 04, 2011, 02:47:56 PM
hm.. i have no idea, you can only the mod check step by step.
the mod self works.
Title: Re: [MOD] Exif V.1.7.6
Post by: MrAndrew on April 04, 2011, 03:59:18 PM
Which PHP file is responsible for outputting information on details page?
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 04, 2011, 04:02:22 PM
functions.php step.3)
Title: Re: [MOD] Exif V.1.7.6
Post by: MrAndrew on April 09, 2011, 07:33:05 AM
Please tell me how to hide "Exposure,Date and Time:" from details html?
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on April 09, 2011, 08:08:03 AM
Please tell me how to hide "Exposure,Date and Time:" from details html?
search in includes/functions.php:
if ($detailed_view && $image_info[2] == 2){
in the sql query below, remove "image_DateTimeOriginal," and "image_ExposureTime,"

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: MrAndrew on April 09, 2011, 04:51:46 PM
Thanks. Will it save date and time to the database? Will i have possible to see exif date and time in the DB fields?
Title: Re: [MOD] Exif V.1.7.6
Post by: dingsibumzi on December 10, 2011, 02:56:45 PM
so war ein fehler von mir, mit der neuen version checkimages 2.11 hier aus dem forum und der exif erweiterung funktioniert es schon, nur mußte ich "autoresizer" abschalten.
da sonst die exif gekillt werden.

Wie ich beim Testen und rumprobieren rausgefunden habe muss man dies noch immer tun oder?
Wie genau schalte ich das denn ab?

//Edit: Ops bin ich doof, ist ja in der neuen checkimage.php automatisch auf aus wies aussieht...
Dh allerdings ich muss die vorhandenen Bilder neu Hochladen oder? Weil über den EXIF Updater meint er nur "no exif data" ...

//Edit 2: Ok, wie angenommen... Habe nun alle Bilder neu Hochgeladen, jetzt funktioniert es ;)

//Edit 3: Ok doch nicht... Als ich das Bild bei Bild bearbeiten ersetzt habe, hat es mit dem Update funktioniert, lade ich aber neue Bilder hoch, sagt er noch immer No exif data...
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on December 10, 2011, 03:56:34 PM
Willkommen im Forum!
..
//Edit 3: Ok doch nicht... Als ich das Bild bei Bild bearbeiten ersetzt habe, hat es mit dem Update funktioniert, lade ich aber neue Bilder hoch, sagt er noch immer No exif data...
Erste Frage, welche 4i Versioin hast du? Wenn du die V1.7.10 hast würde ich an deiner Stelle diesen Mod einbauen:
http://www.4homepages.de/forum/index.php?topic=29519.0
Zweite Frage, in den Bilder sind sicher die Exifdaten enthalten? wenn ja darfst du den Resizer nicht verwenden, der Killt alle Exif und IPTC Daten.

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: dingsibumzi on December 11, 2011, 09:07:35 PM
Willkommen im Forum!
Danke ;P
War lange auf der Suche nach nem gescheiten Gallery Script, weil meins nicht ganz so das wurde was es sein sollte xD
Dieses ist Kostenlos, gut erweiterbar und auch meiner Meinung nach gut verständlich... Dazu darf man rumscripten daran wie man will, perfekt eig ;D

Erste Frage, welche 4i Versioin hast du?
Ja, ich habe die V1.7.10

...würde ich an deiner Stelle diesen Mod einbauen:
http://www.4homepages.de/forum/index.php?topic=29519.0
Ok, vielen Dank mal bis dahin, der hier ist mir bei der Suche eben ins Auge gesprungen, hätte wohl besser schauen sollen  :oops:

Zweite Frage, in den Bilder sind sicher die Exifdaten enthalten? wenn ja darfst du den Resizer nicht verwenden, der Killt alle Exif und IPTC Daten.
Ja haben sie, wie gesagt, sobald ich diese im Bild Bearbeiten per Upload Funktion Überschreibe bzw neu Uploade und diese Update Exif ausführe, sind sie da...
Und wie deaktiviere ich den resizer denn? in der neuen checkimage.php ist er ja auf 0... Dennoch habe ich ja wie geschrieben mit dem Upload neuer Bilder das gleiche Problem...
Oder liegt das vl auch an dem Script und ich sollte einfach mal das andere da probieren?

Mfg
Joey


//Edit: Ok, der andere Script klappt perfekt ;D
Habe nur ein Problem das es beim Multi Upload nicht funktioniert, dazu habe ich allerdings eine Antwort im entsprechenden Thread gemacht ;)
Danke nochmal ;D
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 03, 2012, 09:39:35 PM
hello I have a problem, why are differences when displaying EXIF information.

left info with IrfanView, the right 4images
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on January 04, 2012, 12:17:04 PM
please attach the image
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 04, 2012, 05:39:34 PM
photo is attached to this posts

(http://img194.imageshack.us/img194/7127/beznazwy4w.th.jpg) (http://imageshack.us/photo/my-images/194/beznazwy4w.jpg/)


Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on January 04, 2012, 05:49:59 PM
@marcinos, I mean the picture that caused this error
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 04, 2012, 06:22:34 PM
I do not have such an image, I installed this MOD

http://www.4homepages.de/forum/index.php?topic=21017.0 (http://www.4homepages.de/forum/index.php?topic=21017.0)

indeed have a clean version 1.7.6, this problem occurred
Title: Re: [MOD] Exif V.1.7.6
Post by: V@no on January 05, 2012, 01:35:35 AM
We need the photo with EXIF to test it with.

			
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 05, 2012, 05:41:56 PM
please
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on January 05, 2012, 06:31:08 PM
The EXIF in your Photos are corrupt.
I have tested a other original Photo and the EXIF works.

one thing, the exposure time function is not correct:

search in your modified code:

        elseif ($key == "ExposureTime") {
                 $ExposureTime = explode("/", $exif_info);

            if ( $ExposureTime[0] == 1 && $ExposureTime[1] == 1 ){
                $exif_array[$exif_match[$key]] = $ExposureTime[1]." sec(s)";
            }
            elseif ( $ExposureTime[0] == 1 ) {
              $exif_array[$exif_match[$key]] = "1/".($ExposureTime[1] * $ExposureTime[0])." sec(s)";
            }
            elseif(($ExposureTime[0] > 1)){
              $exif_array[$exif_match[$key]] = "1/".round($ExposureTime[1]/$ExposureTime[0])." sec(s)";
            }
            elseif ( $ExposureTime[1] > 1 ) {
              $exif_array[$exif_match[$key]] = ($ExposureTime[0]/$ExposureTime[1])." sec(s)";
            }
            elseif( $ExposureTime[1] == 1 ) {
              $exif_array[$exif_match[$key]] = ($ExposureTime[0] * $ExposureTime[1])." sec(s)";
            }
          }

and replace:

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


mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 05, 2012, 09:35:43 PM
thank you for your help,
improved code and as it turned out it destroyed a Helicon Filter EXIF data are therefore displayed in a wrong way.

I would like to add another function FocalLenghtIn35mmFilm how to do it
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on January 05, 2012, 09:47:47 PM
...I would like to add another function FocalLenghtIn35mmFilm how to do it
http://www.4homepages.de/forum/index.php?topic=29519.msg159818#msg159818

mfg Andi
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 06, 2012, 02:10:48 PM
I tried to add the code, but nothing I did not show, nor does it update the database, there is something wrong

Code: [Select]
    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";
        }
      }
    }

if I enter a variable for your camera
  case "DMC-FZ8": $ val = ????; break;

only what
Title: Re: [MOD] Exif V.1.7.6
Post by: V@no on January 06, 2012, 02:55:27 PM
it would make more sense what you did if you posted the whole function, not just part of it
Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 06, 2012, 04:10:47 PM
the rest of the code is a few posts above, the link that gave Rembrandt

http://www.4homepages.de/forum/index.php?topic=29519.msg159818#msg159818 (http://www.4homepages.de/forum/index.php?topic=29519.msg159818#msg159818)
Title: Re: [MOD] Exif V.1.7.6
Post by: Rembrandt on January 06, 2012, 04:20:09 PM
.....
if I enter a variable for your camera
  case "DMC-FZ8": $ val = ????; break;

only what
"$val" is the crop factor from your camera, for FZ8 is the cropfactor "6".
case "DMC-FZ8": $val = 6; break;

Title: Re: [MOD] Exif V.1.7.6
Post by: marcinos on January 06, 2012, 05:25:22 PM
Thank you very much, it's working, I updated the file Update_EXIF_Index.php and update my database automatically