ArachnoVobicA
08.07.2009, 23:47:32
Hiho,
ich hab ein Uploadscript mit resize, watermark und Preview Funktion, funktioniert auch alles einwandfrei.
Nun möchte ich das gleiche Script so umschreiben, das es ein hochgeladenes Bild in zwei unterschiedlichen Größen in 2 unterschiedlichen Ordnern speichert.
Hier mal meine 3 grundlegenden PHP Dateien.
index.php
<?php
error_reporting(E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Horst it! Bildupload</title>
<style type="text/css">
body {
font-family:Tahoma;
font-size:12px;
}
</style>
<script language="JavaScript" type="text/javascript">
var ie = !!document.all;
function copy(textfeld){
if (ie) {
textfeld.select();
cbBuffer=textfeld.createTextRange();
cbBuffer.execCommand('Copy');
}
}
</script>
</head>
<body bgcolor="#ffffff" style="background-image: url(http://www.arachnovobica.de/spinnenrad/horst-premium/mainmain.jpg); background-attachment:fixed;" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
<?php
include("include/config.inc.php");
$upped = false;
//überprüft sozusagen, ob das formular abgesendet wurde unb bild kleiner ist
if(count($_FILES) > 0)
{
if($_FILES['pic']['size'] > 0 AND $_FILES['pic']['size'] < $config['maxsize'])
{
//überprüfung der dateitypen
if($_FILES['pic']['type'] == "image/jpg" OR $_FILES['pic']['type'] == "image/jpeg" OR $_FILES['pic']['type'] == "image/pjpeg" OR $_FILES['pic']['type'] == "image/gif" OR $_FILES['pic']['type'] == "image/png" OR $_FILES['pic']['type'] == "image/x-png")
{
//timestamp vor name, so kann keine datei überschrieben werden
$filename = time().$_FILES['pic']['name'];
//datei nach verzeichnis verschieben
if(move_uploaded_file($_FILES['pic']['tmp_name'], $config['folder'].$filename))
{
$upped = true;
}
//datei konnte nicht verschoben werden
else
{
echo "<font color='red'>Fehler beim hochladen des Bildes!</font><pre>";
//error switchen
switch($_FILES['pic']['error'])
{
//Fehlernummern wie sie auf php.net setehen
case 1:
echo "Die Datei überschreitet die Maximale Dateigröße die in der php.ini festgelegt wurde!";
break;
case 2:
echo "Die Datei überschreitet die Maximale Dateigröße die im Formular festgelegt wurde!";
break;
case 3:
echo "Die Datei wurde nur teilweise hochgeladen!";
break;
case 4:
echo "Es wurde keine Datei hochgeladen!";
break;
}
echo "</pre>";
}
}
//falscher typ
else
{
echo "<font color='red'>Sie dürfen nur jpg, jpeg, gif oder png Bilder hochladen! (".$_FILES['pic']['type'].")</font>";
}
}
//überprüft, ob das bild hochgeladen aber zu groß ist
elseif($_FILES['pic']['size'] > 0 AND $_FILES['pic']['size'] > $config['maxsize'])
{
echo "<font color='red'>Die maximale Dateigröße beträgt ".round($config['maxsize'] / 1024 / 1024, 2)." MB!</font><hr />";
}
}
?>
Maximale Dateigröße: <?= round($config['maxsize'] / 1024 / 1024, 2); ?> MB.<br />
Erlaubte Dateitypen: jpg, jpeg, gif, png<br />
<form method="post" action="index.php" enctype="multipart/form-data">
<input type="file" name="pic" size="60" value="Bild suchen" /><br />
<br />
<input type="submit" value="Horst it Premium!" />
<br />
<center></center><? if($upped) {
echo "BBCode für Foren:<br /><textarea cols=60 rows=5 name=text readonly=readonly>.$filename."]http://www.spiderwheel.com/horst-premium/".$config['folder2'].$filename." (http://www.spiderwheel.com/horst-premium/".$config['folder')</textarea><br />"; ?>
<input type="button" value="Kopieren (nur IE)" name="cmdCopy" onClick="copy(this.form.text)" /><br />
<?
echo "<img src='imageThumb.php?folder=".$config['folder2']."&filename=".$filename."&quality=".$config['quality']."' /><br /><br /"; }
?></center>
</form>
</body>
</html>
imageThumb.php
<?php
header("Content-Type: image/jpeg");
$folder = $_GET['folder'];
$datei = $folder.$_GET['filename'];
$daten = getimagesize($datei);
$orgb = $daten[0];
$orgh = $daten[1];
$thumbb = 1024;
$f = $daten[0] / $thumbb;
$thumbh = $daten[1] / $f;
$wasserzeichen = ImageCreateFromPNG("watermark.png");
if($daten[2] == 1)
{
$orgbild = ImageCreateFromGIF($datei);
$thumb = ImageCreate($thumbb, $thumbh);
ImageCopyResampled($thumb, $orgbild, 0, 0, 0, 0, $thumbb, $thumbh, $orgb, $orgh);
$black = imagecolorallocate($thumb, 0,0,0);
imagecolorset($thumb, $black, 255,255,255);
ImageJPEG($thumb, $datei, $_GET['quality']);
$bild = imagecreatefromjpeg($datei);
imagecopyresampled($bild, $wasserzeichen, ($thumbb-150), ($thumbh-150), 0, 0, 1024, $thumbh, 1024, $thumbh);
imageJPEG($bild, $datei, $_GET['quality']);
imageJPEG($bild);
}
elseif($daten[2] == 2)
{
$orgbild = ImageCreateFromJPEG($datei);
$thumb = ImageCreateTrueColor($thumbb, $thumbh);
ImageCopyResampled($thumb, $orgbild, 0, 0, 0, 0, $thumbb, $thumbh, $orgb, $orgh);
ImageJPEG($thumb, $datei, $_GET['quality']);
$bild = imagecreatefromjpeg($datei);
imagecopyresampled($bild, $wasserzeichen, ($thumbb-150), ($thumbh-150), 0, 0, 1024, $thumbh, 1024, $thumbh);
imageJPEG($bild, $datei, $_GET['quality']);
imageJPEG($bild);
}
elseif($daten[2] == 3)
{
$orgbild = ImageCreateFromPNG($datei);
$thumb = ImageCreate($thumbb, $thumbh);
imagealphablending($thumb, false);
ImageCopyResampled($thumb, $orgbild, 0, 0, 0, 0, $thumbb, $thumbh, $orgb, $orgh);
imagesavealpha($thumb, true);
imagefill($thumb, 0, 0, imagecolorallocatealpha($thumb, 255, 255, 255, 127));
ImagePNG($thumb, $datei);
$bild = imagecreatefrompng($datei);
imagealphablending($wasserzeichen, false);
imagecopyresampled($bild, $wasserzeichen, ($thumbb-150), ($thumbh-150), 0, 0, 1024, $thumbh, 1024, $thumbh);
imagesavealpha($wasserzeichen, true);
imagefill($wasserzeichen, 0, 0, imagecolorallocatealpha($wasserzeichen, 255, 255, 255, 127));
imagePNG($bild, $datei);
imagePNG($bild);
}
include("http://www.spiderwheel.com/horst-premium/imageThumb2.php");
?>
included config.inc.php
<?php
/*
Bildupload Script
für ArachnoVobicA
von Webzeile (2009)
*/
$config['folder'] = "uploads/"; //dahin kommen die bilder
$config['quality'] = 75; //qualität des JPG bildes
$config['maxsize'] = 6291456 // größe in bytes
?>
Wie muss ich nun welche Datei umschreiben, damit das hochgeladene Bild in einen zweiten Uploadordner hochgeladen wird und zwar in einer bestimmten Größe, ähnlich wie es in der imageThumb.php geschieht.
Das Script soll ein Uploadscript für ein Forum werden, die BBCode ausgabe nach dem Upload soll dann einen Bildlink enthalten der vom kleinen Bild, direkt auf das größere verlinkt.
Ich hab absolut keinen Plan von PHP, wenn irgendwer Ahnung hätte wäre ich unendlich dankbar.
MfG
Micha
ich hab ein Uploadscript mit resize, watermark und Preview Funktion, funktioniert auch alles einwandfrei.
Nun möchte ich das gleiche Script so umschreiben, das es ein hochgeladenes Bild in zwei unterschiedlichen Größen in 2 unterschiedlichen Ordnern speichert.
Hier mal meine 3 grundlegenden PHP Dateien.
index.php
<?php
error_reporting(E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Horst it! Bildupload</title>
<style type="text/css">
body {
font-family:Tahoma;
font-size:12px;
}
</style>
<script language="JavaScript" type="text/javascript">
var ie = !!document.all;
function copy(textfeld){
if (ie) {
textfeld.select();
cbBuffer=textfeld.createTextRange();
cbBuffer.execCommand('Copy');
}
}
</script>
</head>
<body bgcolor="#ffffff" style="background-image: url(http://www.arachnovobica.de/spinnenrad/horst-premium/mainmain.jpg); background-attachment:fixed;" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
<?php
include("include/config.inc.php");
$upped = false;
//überprüft sozusagen, ob das formular abgesendet wurde unb bild kleiner ist
if(count($_FILES) > 0)
{
if($_FILES['pic']['size'] > 0 AND $_FILES['pic']['size'] < $config['maxsize'])
{
//überprüfung der dateitypen
if($_FILES['pic']['type'] == "image/jpg" OR $_FILES['pic']['type'] == "image/jpeg" OR $_FILES['pic']['type'] == "image/pjpeg" OR $_FILES['pic']['type'] == "image/gif" OR $_FILES['pic']['type'] == "image/png" OR $_FILES['pic']['type'] == "image/x-png")
{
//timestamp vor name, so kann keine datei überschrieben werden
$filename = time().$_FILES['pic']['name'];
//datei nach verzeichnis verschieben
if(move_uploaded_file($_FILES['pic']['tmp_name'], $config['folder'].$filename))
{
$upped = true;
}
//datei konnte nicht verschoben werden
else
{
echo "<font color='red'>Fehler beim hochladen des Bildes!</font><pre>";
//error switchen
switch($_FILES['pic']['error'])
{
//Fehlernummern wie sie auf php.net setehen
case 1:
echo "Die Datei überschreitet die Maximale Dateigröße die in der php.ini festgelegt wurde!";
break;
case 2:
echo "Die Datei überschreitet die Maximale Dateigröße die im Formular festgelegt wurde!";
break;
case 3:
echo "Die Datei wurde nur teilweise hochgeladen!";
break;
case 4:
echo "Es wurde keine Datei hochgeladen!";
break;
}
echo "</pre>";
}
}
//falscher typ
else
{
echo "<font color='red'>Sie dürfen nur jpg, jpeg, gif oder png Bilder hochladen! (".$_FILES['pic']['type'].")</font>";
}
}
//überprüft, ob das bild hochgeladen aber zu groß ist
elseif($_FILES['pic']['size'] > 0 AND $_FILES['pic']['size'] > $config['maxsize'])
{
echo "<font color='red'>Die maximale Dateigröße beträgt ".round($config['maxsize'] / 1024 / 1024, 2)." MB!</font><hr />";
}
}
?>
Maximale Dateigröße: <?= round($config['maxsize'] / 1024 / 1024, 2); ?> MB.<br />
Erlaubte Dateitypen: jpg, jpeg, gif, png<br />
<form method="post" action="index.php" enctype="multipart/form-data">
<input type="file" name="pic" size="60" value="Bild suchen" /><br />
<br />
<input type="submit" value="Horst it Premium!" />
<br />
<center></center><? if($upped) {
echo "BBCode für Foren:<br /><textarea cols=60 rows=5 name=text readonly=readonly>.$filename."]http://www.spiderwheel.com/horst-premium/".$config['folder2'].$filename." (http://www.spiderwheel.com/horst-premium/".$config['folder')</textarea><br />"; ?>
<input type="button" value="Kopieren (nur IE)" name="cmdCopy" onClick="copy(this.form.text)" /><br />
<?
echo "<img src='imageThumb.php?folder=".$config['folder2']."&filename=".$filename."&quality=".$config['quality']."' /><br /><br /"; }
?></center>
</form>
</body>
</html>
imageThumb.php
<?php
header("Content-Type: image/jpeg");
$folder = $_GET['folder'];
$datei = $folder.$_GET['filename'];
$daten = getimagesize($datei);
$orgb = $daten[0];
$orgh = $daten[1];
$thumbb = 1024;
$f = $daten[0] / $thumbb;
$thumbh = $daten[1] / $f;
$wasserzeichen = ImageCreateFromPNG("watermark.png");
if($daten[2] == 1)
{
$orgbild = ImageCreateFromGIF($datei);
$thumb = ImageCreate($thumbb, $thumbh);
ImageCopyResampled($thumb, $orgbild, 0, 0, 0, 0, $thumbb, $thumbh, $orgb, $orgh);
$black = imagecolorallocate($thumb, 0,0,0);
imagecolorset($thumb, $black, 255,255,255);
ImageJPEG($thumb, $datei, $_GET['quality']);
$bild = imagecreatefromjpeg($datei);
imagecopyresampled($bild, $wasserzeichen, ($thumbb-150), ($thumbh-150), 0, 0, 1024, $thumbh, 1024, $thumbh);
imageJPEG($bild, $datei, $_GET['quality']);
imageJPEG($bild);
}
elseif($daten[2] == 2)
{
$orgbild = ImageCreateFromJPEG($datei);
$thumb = ImageCreateTrueColor($thumbb, $thumbh);
ImageCopyResampled($thumb, $orgbild, 0, 0, 0, 0, $thumbb, $thumbh, $orgb, $orgh);
ImageJPEG($thumb, $datei, $_GET['quality']);
$bild = imagecreatefromjpeg($datei);
imagecopyresampled($bild, $wasserzeichen, ($thumbb-150), ($thumbh-150), 0, 0, 1024, $thumbh, 1024, $thumbh);
imageJPEG($bild, $datei, $_GET['quality']);
imageJPEG($bild);
}
elseif($daten[2] == 3)
{
$orgbild = ImageCreateFromPNG($datei);
$thumb = ImageCreate($thumbb, $thumbh);
imagealphablending($thumb, false);
ImageCopyResampled($thumb, $orgbild, 0, 0, 0, 0, $thumbb, $thumbh, $orgb, $orgh);
imagesavealpha($thumb, true);
imagefill($thumb, 0, 0, imagecolorallocatealpha($thumb, 255, 255, 255, 127));
ImagePNG($thumb, $datei);
$bild = imagecreatefrompng($datei);
imagealphablending($wasserzeichen, false);
imagecopyresampled($bild, $wasserzeichen, ($thumbb-150), ($thumbh-150), 0, 0, 1024, $thumbh, 1024, $thumbh);
imagesavealpha($wasserzeichen, true);
imagefill($wasserzeichen, 0, 0, imagecolorallocatealpha($wasserzeichen, 255, 255, 255, 127));
imagePNG($bild, $datei);
imagePNG($bild);
}
include("http://www.spiderwheel.com/horst-premium/imageThumb2.php");
?>
included config.inc.php
<?php
/*
Bildupload Script
für ArachnoVobicA
von Webzeile (2009)
*/
$config['folder'] = "uploads/"; //dahin kommen die bilder
$config['quality'] = 75; //qualität des JPG bildes
$config['maxsize'] = 6291456 // größe in bytes
?>
Wie muss ich nun welche Datei umschreiben, damit das hochgeladene Bild in einen zweiten Uploadordner hochgeladen wird und zwar in einer bestimmten Größe, ähnlich wie es in der imageThumb.php geschieht.
Das Script soll ein Uploadscript für ein Forum werden, die BBCode ausgabe nach dem Upload soll dann einen Bildlink enthalten der vom kleinen Bild, direkt auf das größere verlinkt.
Ich hab absolut keinen Plan von PHP, wenn irgendwer Ahnung hätte wäre ich unendlich dankbar.
MfG
Micha