Direkt nach Bildupload tumbnail erzeugen!!

CikoNo1

Erfahrenes Mitglied
Hi Leute,

ich brauch mal wieder eure Hilfe, und zwar will ich thumbnails erzeugen, es gibt im netz zahlreiche Tutorials aber bei allen werden die Thumbnails aus einem Ordner in dem die Bilder schon liegen erzeugt. Wie funktioniert es wenn ich dies direkt beim Bildupload haben will. Also soll so zu sagen nur das Thumbnail auf den Server geladen werden, der Grund wieso ich das machen will ist, dass meine Originalbilder einfach zu groß sind (ca. 1,5MB).

Hier mal der Code eines Tutorials:
PHP:
<?php

$Grafikdatei = "image.jpg";

$Bilddaten = getimagesize($Grafikdatei);

$OriginalBreite = $Bilddaten[0];
$OriginalHoehe = $Bilddaten[1];
$ThumbnailBreite = 128;
if($OriginalBreite < $ThumbnailBreite)
{
	$ThumbnailBreite=$OriginalBreite;
}
$Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
$ThumbnailHoehe = intval($OriginalHoehe/$Skalierungsfaktor);

if($Bilddaten[2]==1)
{
	$Originalgrafik = ImageCreateFromGIF($Grafikdatei);
	$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
	ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
	ImageGIF($Thumbnailgrafik, "thumb_".$Grafikdatei);
}
elseif($Bilddaten[2]==2)
{
	$Originalgrafik = ImageCreateFromJPEG($Grafikdatei);
	$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
	ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
	ImageJPEG($Thumbnailgrafik, "thumb_".$Grafikdatei);
}
elseif($Bilddaten[2]==3)
{
	$Originalgrafik = ImageCreateFromPNG($Grafikdatei);
	$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
	ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
	ImagePNG($Thumbnailgrafik, "thumb_".$Grafikdatei);
}

echo"<img src=\"thumb_",
	$Grafikdatei,
	"\">";

?>

Vielleicht kann mir jemand noch sagen wo ich angeben muss wo die Thumbnails gespeichert werden!!(Im Bezug auf dieses Skript)

MFG
 
bin mir nicht sicher aber "UNTERORDNER/thumb_".$Grafikdatei könnte gehen. Eventuell vor das UNTERORDNER noch ein / setzen.

MfG
 
Jetzt bekomme ich irgendwie diese Fehlermeldung:

Code:
Warning: imagecreatefromjpeg(Sonnenuntergang.jpg): failed to open stream: No such file or directory in /home/www/web58/html/admin/includes/partypics.inc.php on line 28

Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/www/web58/html/admin/includes/partypics.inc.php on line 30

Warning: imagejpeg(): Unable to open 'tn_Sonnenuntergang.jpg' for writing in /home/www/web58/html/admin/includes/partypics.inc.php on line 31

Warning: imagejpeg(): Unable to open 'Sonnenuntergang.jpg' for writing in /home/www/web58/html/admin/includes/partypics.inc.php on line 61

Also noch mal was ich machen will:
Ich will ein admin tool schreiben für eine Photogallerie.

Hier mal mein PHP Datei:
PHP:
<?
	session_start();
	/////////////////////////////INCLUDES/////////////////////////////
	require_once("includes/pet_class.inc.php");
	
	include_once("includes/admin.inc.php");
	include_once("includes/partypics.inc.php");

	///////////////////////////GHLOBALE VARIABLEN//////////////////////////////////
	ereg("([^\\/]*)$", $HTTP_SERVER_VARS['PHP_SELF'], $php_self); 
	define('PHP_SELF', $php_self[1]);

	$dataarray_gallerie = array();
	///////////////////////////Template laden///////////////////////////
	$template1 = new pet();
	$template2 = new pet();
	$template3 = new pet();
	$template4 = new pet();
	
	//Template laden
	$template1->readFile("templates/login.tpl.htm");
	$template2->readFile("templates/blank.tpl.htm");
	$template3->readFile("templates/gallerie.tpl.htm");
	$template4->readFile("templates/gallerieBilder.tpl.htm");
	
	//Bezüge setzten
	$template1->assign(PHP_SELF, "self");
	$template2->assign(PHP_SELF, "self");
	$template3->assign(PHP_SELF, "self");
	$template4->assign(PHP_SELF, "self");
	
	$op = $HTTP_POST_VARS["op"];
	$name = $HTTP_POST_VARS["name"];
	$passwort = $HTTP_POST_VARS["passwort"];
	$photogallerie = $HTTP_POST_VARS["photogallerie"];
	$gallerieID = $HTTP_POST_VARS["gallerieID"];
	$gallerie = $HTTP_POST_VARS["gallerie"];
	$gallerieName = $HTTP_POST_VARS["gallerieName"];
	
	/////////////////////////////Programm/////////////////////////////
	$gallerie = '<a href="javascript:wertübergabe(document.form.op, 1)" class="textWeiss"><img src="bilder/list.jpg" border="0">&nbsp;Neue Bildergalliere</a><br><br>';
	$newsletter = '<a href="javascript:wertübergabe(document.form.op, 2)" class="textWeiss"><img src="bilder/list.jpg" border="0">&nbsp;Newsletter versenden</a><br><br>';
	$fehler = '<span><center>Zugriff verweigert!<center><br><a href="javascript:document.history.back()" class="textWeiss">zurück</a></span>';
	
	if($op == "")
	{
		$template1->parse();
		$template1->output();
	}
	elseif($op == "login")
	{
		$dataarray_login = getAdminData($name, $passwort);
		
		if(!$dataarray_login['id'])
		{
			$template2->assign($fehler, "fehler");
			
			$template2->parse();
			$template2->output();
		}
		else
		{
			$_SESSION['id'] = $dataarray_login['id'];
			$_SESSION['name'] = $dataarray_login['name'];
		
			$template2->assign($gallerie, "gallerie");
			$template2->assign($newsletter, "newsletter");
			
			$template2->parse();
			$template2->output();
		}
	}
	elseif($op == "1")
	{
		$template3->parse();
		$template3->output();
	}
	elseif($op == "2")
	{
		echo "newsletter";
	}
	elseif($op == "3")
	{
		insertGallerie($photogallerie);
		
		$dataarray_gallerie = getGallerieID($photogallerie);
		
		$template4->assign($dataarray_gallerie["id"], "gallerieID");
		$template4->assign($dataarray_gallerie["gallerie"], "gallerie");
		
		$template4->parse();
		$template4->output();
	}
	elseif($op == "4")
	{
		$pfad = $_FILES['File']['tmp_name'];
		
		$name = $_FILES['File']['name'];
				
		thumbnailErzeugen($pfad, $name);
		
		originalErzeugen($pfad, $name);
		
	}
?>

Und hier meine Funktionen ( thumbnailErzeugen() und originalErzeugen()):
PHP:
<?
	///////////////////////INCLUDES///////////////////////////////
	include_once("includes/datenbank.inc.php");
	
	///////////////////SELECTS////////////////////////////////////
	function thumbnailErzeugen($pfad, $name)
	{
		$Grafikdatei = $pfad;
		$EndDatei = $name;
		
		$Bilddaten = getimagesize($Grafikdatei);
		
		$OriginalBreite = $Bilddaten[0];
		$OriginalHoehe = $Bilddaten[1];
		$ThumbnailBreite = 100;
		
		if($OriginalBreite < $ThumbnailBreite)
		{
			$ThumbnailBreite = $OriginalBreite;
		}
		
		$Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
		$ThumbnailHoehe = intval($OriginalHoehe/$Skalierungsfaktor);
		
		if($Bilddaten[2]==2)
		{
			echo "-->if schleife in inc-Datei";
			$Originalgrafik = ImageCreateFromJPEG($EndDatei);
			$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
			ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
			ImageJPEG($Thumbnailgrafik, "tn_".$EndDatei);
		}
		
		echo"<img src=\"tn_",$Grafikdatei,"\">";
	}
	
	function originalErzeugen($pfad, $name)
	{
		$Grafikdatei = $pfad;
		$EndDatei = $name;
		
		$Bilddaten = getimagesize($Grafikdatei);
		
		$OriginalBreite = $Bilddaten[0];
		$OriginalHoehe = $Bilddaten[1];
		$ThumbnailBreite = 600;
		
		if($OriginalBreite < $ThumbnailBreite)
		{
			$ThumbnailBreite = $OriginalBreite;
		}
		
		$Skalierungsfaktor = $OriginalBreite/$ThumbnailBreite;
		$ThumbnailHoehe = intval($OriginalHoehe/$Skalierungsfaktor);
		
		if($Bilddaten[2]==2)
		{
			$Originalgrafik = ImageCreateFromJPEG($Grafikdatei);
			$Thumbnailgrafik = ImageCreate($ThumbnailBreite, $ThumbnailHoehe);
			ImageCopyResized($Thumbnailgrafik, $Originalgrafik, 0, 0, 0, 0, $ThumbnailBreite, $ThumbnailHoehe, $OriginalBreite, $OriginalHoehe);
			ImageJPEG($Thumbnailgrafik, $EndDatei);
		}
	}	
?>

1. Im ersten Schritt wird der Name der Gallerie eingetragen und in die DB geschrieben.
HTML:
<form method="post" name="form" action="<!-- {self} -->">
<body>
     <div id="main">
          <div id="logo"><img src="bilder/logo.gif" alt="" border="0"></div>
          <div id="vertiBalken">
               <div id="inhalt">
                    <div class="unterInhalt" id="ebene1" style="visibility:visible;">
	         <center>
	              <br><br><br><br><br>
	              <div id="gbAnzeigen">
	                   <div id="SpalteLila" class="textWeiss"><center><strong>Neue Photogallerie hinzufügen</strong></center></div>
		       &nbsp;Name der Photogallerie:<br>
		       <input type="text" name="photogallerie"><br><br>
		       &nbsp;&nbsp;<a href="javascript:wertübergabe(document.form.op, 3)">Speichern</a>
                                       <input type="hidden" name="op" value="">
		   </div>
	         </center>
	   </div>
               </div>
           </div>
        <div id="horiBalken">
     </div>
</div>
</body>
</form>

2. Danach kommt der Bildupload die ebenfalls in die DB geschrieben wird!
HTML:
<form method="post" enctype="multipart/form-data" name="form" action="<!-- {self} -->">
<body>
     <div id="main">
          <div id="logo"><img src="bilder/logo.gif" alt="" border="0"></div>
          <div id="vertiBalken">
               <div id="inhalt">
                    <div class="unterInhalt" id="ebene1" style="visibility:visible;">
	         <center>
	              <br><br><br><br><br>
	              <div id="gbAnzeigen">
	                   <div id="SpalteLila" class="textWeiss"><center><strong>Bilder zur <!-- {gallerie} --> Gallerie hinzufügen</strong></center></div>
		       &nbsp;Bild auswählen:<br>
		       <input type="file" name="File"><br><br>
		       &nbsp;&nbsp;<a href="javascript:wertübergabe(document.form.op, 4)">Speichern</a>
                                       <input type="hidden" name="op" value=""><input type="hidden" name="gallerieID" value="<!-- {gallerieID} -->"><input type="hidden" name="gallerieName" value="<!-- {gallerie} -->">
		   </div>
	         </center>
	   </div>
               </div>
           </div>
        <div id="horiBalken">
     </div>
</div>
</body>
</form>

Kann mir jemand sagen was ich da falsch mache bin schon total am verzweifeln mein Kopf rauch ohne Ende!

MFG
 
wir sollten erstmal schnell zwei Sachen klären.

Soll nur das Thumbnail hochgeladenwerden.
Also Bild auswählen, verkleinern, hochladen.

Oder Bild hochladen, verkleinern, Thumb abspeichern, Original löschen.

ersteres geht nicht mit PHP zweites schon.


MfG
 
Dann wohl das zweite, weil ich alles in PHP halte will.

Aber mein Problem ist ja das ich ja noch nicht mal ein Bild hochladen kann. Ich will es ja in einen bestimmten Ordner hochladen (den Ordner der einen Schritt zuvor erstellt wurde).
 
in der aufgerufenen PHP

Code:
move_uploaded_file($_FILES['File']['tmp_name'], "ORDNERNAME/".$_FILES['File']['name']);
reinschreiben.

Hier wird das hochgeladene File in den Ordner "ORDNERNAME/Bildname.jpg" verschoben.

Eventuell sollte man vorher testen ob die Datei schon vorhanden ist.
Anstatt $_FILES['File']['name'] kann man der Datei auch einen anderen Namen geben.



MfG
 
danke aber das habe ich schon aber wie lösche ich das wieder wenn das thumbnail erzeugt und abgespeichert wurde
 
$_FILES['File']['tmp_name'] wird automatisch am Ende des Scriptes gelöscht

Thumbnail löscht du mit
unlink("ORDNERNAME/Bildname.jpg" );
 
Zurück