Hallo,
das folgende Skript soll mir Fotos verkleinern und hochladen.
Falls die benötigte Ordnerstruktur noch nicht vorhanden ist, soll sie erstellt werden.
Das Problem ist, das die Ordner nicht erstellt werden, wenn sie noch nicht vorhanden sind.
Kann mir von Euch Jemand weiter helfen?
Vielen Dank im Voraus.
Gruß
T:-)M
Die Fehlermeldungen:
Warning: mkdir(): Unable to access match in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 94
Warning: chdir(): Unable to access match in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 97
Warning: mkdir(): Unable to access klein in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 107
Warning: mkdir(): Unable to access normal in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 119
Warning: imagejpeg(): Unable to open 'klein/foto_alt.jpg' for writing in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 137
Warning: imagejpeg(): Unable to open 'normal/foto_alt.jpg' for writing in /mnt/kw1/06/468/00000012/htdocs/dyn_test/fotoalbum/foto_index.php on line 146
Die Skripten:
Die Variablen werden aus einem Formular übergeben:
Code:
<form enctype="multipart/form-data" action="foto_index.php" method="post">
<p><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><strong>1. </strong>Bitte das Jahr hier auswählen</font></font></p>
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="jahr">
<option value="nix" selected>Bitte Jahr auswaehlen ...</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
</select>
</font></p>
<p><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><strong>2. </strong>Bitte Regatta hier auswählen</font></font></p>
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<select name="regatta">
<option value="nix" selected>Bitte Regatta auswaehlen ...</option>
<option value="senat">Senatspreis</option>
<option value="match">Match Race H-Boot</option>
</select>
</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
</font></p>
<p><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><strong>3. </strong>Bitte Datei hier auswählen </font></font>
</p>
<font face="Verdana, Arial, Helvetica, sans-serif"><p><font size="2">
<input type="hidden" name="max_file_size" value="5000000">
<input name="file" type="file" size="30">
</font></p>
</font>
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>4.</strong> Bitte den Button klicken um das Foto hochzuladen<br>
<br>
<input type="submit" value="Senden">
</font></p>
</form>
an dieses PHP Skript:
Code:
<?php
/**************************************************************/
/* Fotoskript ***/
/* Erzeugt Thumbnails und Normalbilder von einem jpg-Foto ***/
/* das ueber die Eingabemaske hochgeladen werden kann ***/
/* egal ob Hoch- Querformat oder quadratisch ***/
/**************************************************************/
/********************************************************/
/* Part 1 */
/* Bilddaten zur auslesen */
/********************************************************/
/* übergebene Variablen in Superglobals geändert */
echo "Bildname ist ";
echo $_FILES['file']['name'];
// Daten auslesen
// hoehe und breite
$groesse = getimagesize($_FILES['file']['tmp_name']);
$breite = $groesse[0];
$hoehe = $groesse[1];
echo "Höhe ist $hoehe , Breite ist $breite";
// neue hoehe und breite des bildes berechnen
// bild ist querformat wenn breite groesser als hoehe
if($breite>$hoehe) {
echo "Bild ist im Querformat";
// groesse fuer die thumbnails im Querformat 100 px breit
$breite_klein = 100;
$hoehe_klein = floor(($hoehe/$breite) * $breite_klein);
// hoehe normalbild berechnen im Querformat 350 px breit
$breite_normal = 350;
$hoehe_normal = floor(($hoehe/$breite) * $breite_normal);
}
// bild ist im hochformat wenn breite kleiner als hoehe
else if($breite<$hoehe) {
echo "Bild ist im Hochkantformat";
$hoehe_klein = 100;
// breite thumbnails berechnen / floor rundet nach unten ab - da nur ganze zahlen
$breite_klein = floor(($breite/$hoehe) * $hoehe_klein);
// breite normalbild berechnen im hochformat 350 px hoch
$hoehe_normal = 350;
$breite_normal = floor(($breite/$hoehe) * $hoehe_normal);
}
// sonst ist das bild quadratisch - breite = hoehe
else {
echo "Bild ist im Quadratisch";
$breite_klein = 100;
$hoehe_klein = 100;
$breite_normal = 350;
$hoehe_normal = 350;
}
echo "<br>Breite klein: $breite_klein <br>";
echo "Hoehe klein: $hoehe_klein <br>";
echo "Breite normal: $breite_normal <br>";
echo "Hoehe normal: $hoehe_normal <br>";
/********************************************************/
/* part 2 */
/* verzeichnisse anlegen wenn sie noch nicht existieren */
/********************************************************/
// Verzeichnis für das Jahr anlegen
/*
if (!file_exists($_POST['jahr'])){
mkdir($_POST['jahr'], 0777);
}
*/
if (!is_dir($_POST['jahr'])){
mkdir($_POST['jahr'], 0777);
}
// gehe in das Verzeichnis des aktuellen Jahres
chdir($_POST['jahr']);
// verzeichnis für die regatta anlegen
// der name wird durch $regatta aus dem Formular übergeben
// pruefen ob das verzeichnis schon existiert - sonst verzeichnis anlegen
/*
if (!file_exists($_POST['regatta'])){
mkdir($_POST['regatta'], 0777);
}
*/
if (!is_dir($_POST['regatta'])){
mkdir($_POST['regatta'], 0777);
}
// gehe in das Verzeichnis der aktuellen regatta
chdir($_POST['regatta']);
// prüfe ob das Verzeichnis "klein" für die thumbnails existiert - wenn nicht anlegen
/*
if (!file_exists("klein")){
mkdir("klein", 0777);
}
*/
if (!is_dir("klein")){
mkdir("klein", 0777);
}
//// prüfe ob das Verzeichnis "normal" für die großen Bilder existiert - wenn nicht anlegen
/*
if (!file_exists("normal")){
mkdir("normal", 0777);
}
*/
if (!is_dir("normal")){
mkdir("normal", 0777);
}
/********************************************************/
/* part 3 */
/* Bilder in die Verzeichnisse schreiben */
/********************************************************/
// bild erzeugen - mit hilfe des handlers $bild
/***** Thumbnail erzeugen *******/
$bild_alt=ImageCreateFromJPEG($_FILES["file"]["tmp_name"]);
$bild_klein=ImageCreateTruecolor($breite_klein,$hoehe_klein);
ImageCopyResized($bild_klein, $bild_alt,0,0,0,0,$breite_klein,$hoehe_klein,$breite,$hoehe);
// Bild als jpg speichern
ImageJPEG($bild_klein, "klein/".$_FILES['file']['name'], 75);
/***** Bild normalgroesse erzeugen *******/
$bild_alt=ImageCreateFromJPEG($_FILES["file"]["tmp_name"]);
$bild_normal=ImageCreateTruecolor($breite_normal,$hoehe_normal);
ImageCopyResized($bild_normal, $bild_alt,0,0,0,0,$breite_normal,$hoehe_normal,$breite,$hoehe);
// Bild als jpg speichern
ImageJPEG($bild_normal, "normal/".$_FILES['file']['name'], 75);
echo "Der Upload ist beendet<br><br>";
echo "<a href=\"foto_index.htm\">Weiteres Bild hochladen.</a><br>";
echo "<a href=\"foto_anzeigen.htm\">Bilder anschauen.</a><br>";
?>