Author Topic: [MOD] Exif V.1.7.6  (Read 189337 times)

0 Members and 1 Guest are viewing this topic.

rinaldos

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #15 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);
        }

Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #16 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

rinaldos

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #17 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

Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #18 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

rinaldos

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #19 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

Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #20 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

rinaldos

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #21 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.....



Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #22 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

Offline nobby

  • 4images Guru
  • *******
  • Posts: 2.873
    • View Profile
Re: [MOD] Exif V.1.7.6
« Reply #23 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

Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #24 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

 
« Last Edit: April 03, 2008, 10:05:18 AM by Rembrandt »

rinaldos

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #25 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

Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #26 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

rinaldos

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #27 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

Rembrandt

  • Guest
Re: [MOD] Exif V.1.7.6
« Reply #28 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

Offline Nicky

  • Administrator
  • 4images Guru
  • *****
  • Posts: 3.195
    • View Profile
Re: [MOD] Exif V.1.7.6
« Reply #29 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!
cheers
Nicky
Your first three "must do" before you ask a question ! (© by V@no)
- please read the Forum Rules ...
- please study the FAQ ...
- please try to Search for your answer ...

nicky.net 4 4images
Signature stolen from mawenzi