Ich hab ein bisschen am Thumbnail Code rumgebastelt und das kam dabei raus!
Da ich noch blutiger Anfänger bin, bitte entschuldigt eventuelle Fehler oder umständlichen Code! Die meisten Sachen sind irgendwie zusammengetragen. Funktionieren tut es aber!
Folgende Grundlegende Funktionen sind:
- Laufzeitmessung des Skripts (für die Interessierten von uns ;-))
- Ausgabe aller Erstellten Verzeichnisse oder Bilder (Feedback)
- Automatisches erstellen der "thumbs" und "image" - Verzeichnisse
- Kopieren aller Bilder vom Galerienverzeichnis in das Image Verzeichnis
- Thumbnail-Erstellung in das Thumb-Verzeichnis
- Löschen der Ursprungsbilder (hier bitte Vorsicht)
Also!
Du kopierst deine Bildergalerien in das Unterverzeichnis "galerien" in einen dortigen Unterordner (so in etwa)
Code:
EgalWieIhrEsNenntSupaDupathumbnailcreator.php
|
|
|---- galerien
|
|---- Landschaften
|
|---- Makros
|
|---- Tierwelt
Das Skript muß dann noch in das Hauptverzeichnis! Drüberlaufen lassen! Fertig!
Mit der Zuweisung in der PHP.ini max_execution_time (480 Sekunden) setzte ich die Laufzeit hoch damit das Skript nicht vorzeitig abgebrochen wird. Ihr müßt bedenken das bei einer Galerie von mehr als 200 Bilder ganz schön Rechenpower (SERVER-seitig) nötig ist! Sollte es dennoch abbrechen, einfach nochmal laufen lassen! Es soll auch Server geben wo sich diese Einstellung nicht ändern läßt! Das Skript ist so konzipiert daß er überprüft ob ein Image oder Verzeichnis schon existiert und läuft folglicherweise auch schneller (Wer will schon zweimal die selbe Arbeit machen ;-))!
Auch ist durch die Überprüfungen jederzeit ein nachträgliches Ergänzen von Galerien möglich!
Ich hoffe es hilft jemanden!
Für Kritik bin ich offen!
Viel Spaß damit!
Code:
<?php
// Zeitnahme für Trace
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$started = getmicrotime();
$Originalzeit = ini_get(max_execution_time);
echo '<br /> max_execution_time = ' .$Originalzeit . ' Sekunden (Die Originalzeit)<br /><br />';
$Neuezeit = ini_set('max_execution_time', 480);
$Neuezeit = ini_get(max_execution_time);
echo 'max_execution_time = ' .$Neuezeit . ' Sekunden (Diese wurde hochgesetzt um das Parsen nicht vorzeitig abzubrechen)<br /><br /><br />';
// Variablen
$Zielthumbs = "thumbs"; //Hier sollen Die Thumnails rein
$Zielimages = "images"; //Und hier die Images
//Erstellen eines Verzeichnisses, hier mit CHMOD 755
function create_dir($neuverz)
{
if(file_exists($neuverz))
{
echo "<small>Verzeichnis <b>". $neuverz . " </b>existiert schon.</small><br />";
}
else
{
mkdir($neuverz);
chmod($neuverz, 0755);
echo "<small>Verzeichnis <b>". $neuverz . " </b>erfolgreich erstellt.</small><br />";
}
}
function qThumb( $Bild, $ThumbKantenLaenge, $thumbziel )
{
// Masse ermitteln
$OriginalBildInfo = getimagesize( $Bild );
$OriginalBildBreite = $OriginalBildInfo[0];
$OriginalBildHoehe = $OriginalBildInfo[1];
$OriginalKantenLaenge = $OriginalBildBreite < $OriginalBildHoehe ? $OriginalBildBreite : $OriginalBildHoehe;
// Temporaeres Bild vom Original erzeugen
$TempBild = imagecreatefromjpeg( $Bild );
// Neues Bild erstellen
$NeuesBild = imagecreatetruecolor( $OriginalKantenLaenge, $OriginalKantenLaenge );
// Originalbild in neues Bild einfügen
if ($OriginalBildBreite > $OriginalBildHoehe)
{
imagecopy( $NeuesBild, $TempBild, 0, 0, round( $OriginalBildBreite-$OriginalKantenLaenge )/2, 0, $OriginalBildBreite, $OriginalBildHoehe );
}
else if ($OriginalBildBreite <= $OriginalBildHoehe )
{
imagecopy( $NeuesBild, $TempBild, 0, 0, 0, round( $OriginalBildHoehe-$OriginalKantenLaenge )/2, $OriginalBildBreite, $OriginalBildHoehe );
}
$Thumbnail = imagecreatetruecolor( $ThumbKantenLaenge, $ThumbKantenLaenge );
imagecopyresampled( $Thumbnail, $NeuesBild, 0, 0, 0, 0, $ThumbKantenLaenge, $ThumbKantenLaenge, $OriginalKantenLaenge, $OriginalKantenLaenge );
// Neues Bild ausgeben
imagejpeg( $Thumbnail, $thumbziel, 80 );
imagedestroy( $Thumbnail );
}
// Funktionsaufruf Verzeichnisse "thumbs" und "images" in "galerien"-Verzeichnis anlegen "
echo "<h2>Verzeichnisse erstellen</h2><br />";
$verzeichnisse = glob( "galerien\*", GLOB_ONLYDIR|GLOB_MARK);
foreach ($verzeichnisse as $dir)
{
create_dir($dir . $Zielthumbs) ;
create_dir($dir . $Zielimages) ;
}
// Bilder von den Unterverzeichnissen aus "galerien" auslesen und in "images" verschieben
echo "<h2>Bilder von den Unterverzeichnissen aus \"galerien\" auslesen und in \"images\" verschieben</h2><br />";
foreach ($verzeichnisse as $Bildverz)
{foreach ( glob( $Bildverz . "*.jpg" ) as $Bild){
$teile = (explode('\\', $Bild));
$bildkomplett = $Bildverz . $Zielimages . '\\' .end($teile);
if(file_exists( $bildkomplett ))
{
echo '<small>Bild existiert schon: ' .$bildkomplett.'</small><br />';
}
else {
copy ($Bild , $Bildverz . $Zielimages . '\\' .end($teile));
echo '<small>Bild kopiert: ' .$bildkomplett.'</small><br />';
}
}
}
// thumbnails erstellen und in "thumbs" verschieben
echo "<h2>thumbnails erstellen und in \"thumbs\" verschieben</h2><br />";
foreach ($verzeichnisse as $Bildverz)
{
foreach ( glob( $Bildverz . "*.jpg" ) as $Bild)
{
$teile = (explode('\\', $Bild));
$thumbziel = $Bildverz . $Zielthumbs . '\\' .end($teile);
if(!file_exists( $thumbziel ))
{
qThumb( $Bild, 90, $thumbziel );
echo '<small>Thumb erstellt: ' .$thumbziel.'</small><br />';
}
else {
echo '<small>Thumb existiert schon: ' .$thumbziel.'</small><br />';
}
}
}
// Stammbilder löschen
echo "<h2>Stammbilder löschen</h2><br />";
foreach ($verzeichnisse as $Bildverz)
{
foreach ( glob( $Bildverz . "*.jpg" ) as $Bild)
{
if(file_exists( $Bild ))
{
unlink ( $Bild );
echo '<small>Stammbild '.$Bild. ' wurde gelöscht</small><br/>';
}
else {
echo '<small>Keine Stammbilder mehr da.</small><br />';
}
}
}
echo "<h2>Fertig =D</h2><br />";
//Zum messen der Laufzeit
$ended = getmicrotime();
$script_time = $ended - $started;
Echo "<br />Das Skript lief: " . $script_time . " Sekunden";
$Originalzeit = ini_set('max_execution_time', $Originalzeit);
$Originalzeit = ini_get(max_execution_time);
echo '<br /> max_execution_time = ' .$Originalzeit . ' Sekunden (Wieder zurückgestellt auf die Originalzeit)<br /><br />';
?>