hallo kann mir mal bitte jemand helfen das folgende script (hab ich von einem freund bekommen) so umzuschreiben, dass 3 versionen des hinaufgeladenen bildes gespeichert werden
1. version: originalgröße,
2. version: bild das auf eine breite von 300 pixel skaliert wird
und
3. version: bild das auf eine breite von 100 pixel skaliert wird
wäre echt total froh wenn mir jemand helfen könnte
1. version: originalgröße,
2. version: bild das auf eine breite von 300 pixel skaliert wird
und
3. version: bild das auf eine breite von 100 pixel skaliert wird
PHP:
<form name="upload" action="bild_hinzu.php" method="post" enctype="multipart/form-data" onsubmit="return chkUpload(); completeBild()">
Datei: <input type="file" name="file" size="30">
<input type="submit" name="upload" value="Hochladen">
<?php
if (!empty($_POST['upload'])) {
//if (upload_file($_FILES['file']['tmp_name'],$_FILES['file']['name'])==true) echo "Datei erfolgreich hochgeladen!<br>";
if(move_uploaded_file($_FILES['file']['tmp_name'],"./images/Angebot_der_Woche/".$_FILES['file']['name'])) echo "<br><br><b><i>Datei ".$_FILES['file']['name']." erfolgreich hochgeladen! Die URL lautet:<br><br>http://www.meineseite.at/Images/",$_FILES['file']['name'],"</i></b>";
else echo "<b><i><font color='#FF0000'>Es ist ein Fehler aufgetreten. Datei nicht hochgeladen!</font></i></b>";
}
?>
<?php
if (!($_POST['upload'] == ""))
{
# php-Labor: Bild skalieren
# Fehlerbericht anschalten:
error_reporting(E_ALL);
# gd-version ermitteln fuer jegliche php-version
# ab php 4.3 geht es einfacher mit gd_info
# dazu: puffer einschalten
ob_start();
# teil der phpinfo laden
phpinfo(8);
$info=ob_get_contents();
# puffer loeschen und beenden
ob_end_clean();
# reststring hinter gd version finden
$info=stristr($info, 'gd version');
# suche nach dezimalzahl
preg_match('/\d/', $info, $gd);
# da steht sie jetzt, die gdversion:
$gdversion=$gd[0];
# info und gd loeschen
unset ($info);
unset ($gd);
# Bildgroesse einlesen oder selbst festlegen:
$horizontal=300;
if(isset($_GET['x'])) {
$h=$_GET['x'];
# Groesse begrenzen:
if (($h >= 20) AND ($h <=1000)) {
$horizontal=$h;
}
}
$vertikal = 200;
if(isset($_GET['y'])) {
//$v=$_GET['y'];
# Groesse begrenzen:
if (($v >= 20) AND ($v <=1000)) {
$vertikal=$v;
}
}
# Der Modus legt fest, ob das Bild verzerrt
# werden darf oder nicht. 1 ist unverzerrt.
# Da gibt es dann unter Umstaenden einen
# nicht besonders huebschen Rand, wenn das
# Verhaeltnis von Hoehe zu Breite nicht passt.
# Mit Modus 2 wird weder verzerrt noch
# bleibt ein Rand, dafuer wird die vorgegebene
# Bildgroesse ueberschrieben.
$mod = 3;
if(isset($_GET['modus'])) {
$modus=$_GET['modus'];
# eingabe ueberpruefen:
if (($modus == 0) OR ($modus ==1) OR ($modus ==2)) {
$mod=$modus;
}
}
# Fuer Modus=2 den Anteil festlegen.
# Das ist demzufolge der Modus des
# stufenlosen unverzerrten Vergroesserns
$anteil = 1.0;
if(isset($_GET['ant'])) {
$ant=$_GET['ant'];
# eingabe ueberpruefen:
if (($ant >= 0.1) AND ($ant <=10.0)) {
$anteil=$ant;
}
}
# Wir laden ein Bild von der Festplatte.
# Im array imininfo stehen interessante Informationen
# ueber das Bild. Im Element 3 steht auch noch
# drin, um welchen Bildtyp es sich handelt.
$ms="./Images/".$_FILES['file']['name'];
$imininfo = GetImageSize ($ms);
$x2=$imininfo[0];
$y2=$imininfo[1];
$imin = ImageCreateFromJPEG ($ms);
if ($mod==2) {
$horizontal=round($x2*$anteil);
$vertikal=round($y2*$anteil);
$mod=0;
}
# Bild wenn moeglich im Truecolorformat erzeugen.
# Das muss man bei neuerem php/gd nehmen,
# um brauchbar Bilder zu skalieren,
# wie auch einige hier verwendete
# Funktionen. Mit verwandten Funktionen
# funktioniert es aber aehnlich bei
# aelterem php/gd, siehe unten
if ($gdversion >=2) {
$im = imagecreatetruecolor($horizontal, $vertikal);
} else {
$im = imagecreate($horizontal, $vertikal);
}
# Werte fuer den simplen Fall vorgeben:
$x0=0;
$y0=0;
$xw=$horizontal;
$yw=$vertikal;
# und jetzt gucken wir, ob und wie wir
# groesser oder kleiner machen wollen
# wenn der komplizierte Fall ohne
# Verzerrung und mit Rand vorliegt.
if ($mod==1){
$skalh=$horizontal/$x2;
$skalv=$vertikal/$y2;
if ($skalh < $skalv) {
$y0=round(($vertikal-$y2*$skalh)/2);
$x0=0;
$xw=$horizontal;
$yw=round($y2*$skalh);
} elseif ($skalh > $skalv) {
$x0=round(($horizontal-$x2*$skalv)/2);
$y0=0;
$xw=round($x2*$skalv);
$yw=$vertikal;
}
# wir versuchen fuer den in diesem Fall vorhandenen
# Rand eine eingermassen brauchbare Farbe zu ermitteln,
# was man natuerlich auch schlauer versuchen kann:
$ci = imagecolorat($imin, 1, $y2-1);
$ct = imagecolorsforindex($imin, $ci);
$cs = ImageColorAllocate($im,$ct["red"],$ct["green"],$ct["blue"]);
imagefill ($im, 1, 1, $cs);
}
# Bild skalieren:
if ($gdversion >=2) {
imagecopyresampled ($im, $imin, $x0, $y0, 0, 0, $xw, $yw, $x2, $y2);
} else {
imagecopyresized ($im, $imin, $x0, $y0, 0, 0, $xw, $yw, $x2, $y2);
}
# header senden
# Header("Content-type: image/png");
# Bild raushauen
# ImagePNG($im);
# es ginge auch alternativ:
#Header("Content-type: image/jpeg");
#ImageJPEG($im);
# oder abspeichern als JPEG:
$file="./Images/".$_FILES['file']['name'];
ImageJPEG($im, $file);
# vorsichtshalber Speicher leeren und Bearbeitung beenden:
imagedestroy ($im);
exit;
}
?>
</form><br />
wäre echt total froh wenn mir jemand helfen könnte