mit php bild verkleinern
Phillip
- php
Hallo!
erstmal den code:
if ($bio_picture_name !== "")
{
$extensions = array(".jpg", ".gif", ".JPG", ".Jpg", ".JPEG", ".Jpeg", ".jpeg", ".bmp", ".png");
$ext_tmp = explode(".", $bio_picture_name);
$ext = ".".$ext_tmp[(count($ext_tmp)-1)];
if(in_array($ext, $extensions))
{
while(file_exists("img/bio/$newname"))
{
$newname = "bio";
}
if(move_uploaded_file($bio_picture_tmp_name, "img/bio/$newname.$ext"))
{
mysql_query("UPDATE bio SET db_bio='$bio_bio'");
mysql_query("UPDATE bio SET db_picture_url='img/bio/$newname.$ext'");
echo "<center>";
echo "bio update ok ...";
echo "</center>";
?>
<meta http-equiv="refresh" content="2; URL=index.php?section=bio&action=show">
<?php
}
else { echo "error, please try again...";}
}
else { echo "wrong extension, only images are allowed..."; }
}
also, wie man oben sehen kann lade ich ein bild auf den server hoch. ich möchte allerdings, dass dieses sobald es hochgeladen wird verkleinert wird. wie mache ich das? ich habe mit selbstverstänlich schon viel "thumbnail code" etc angeguckt und auch schon eine menge gegooglet. doch da ich noch ein relativer php anfänger bin bekomme ich das nicht hin. wäre super wenn mir einer helfen kann...
schonmal vielen dank,
phillip
Hello,
Der Code ist grauslich un dich weiß gar nicht, wo man anfangen soll.
Du versuchst einfach gleich zuviel auf einmal.
Soviel konnte ich jedenfalls erkennen.
Dabei war keine der Aufgaben richtig angepackt, keine der Aufgaben durch Fehlerkontrolle abgefangen.
Fangen wir also bestenfalls ganz vorne an: dem Lastenheft. Was soll das Script leisten?
Bitte ausführlich im Klartext ohne Rücksicht auf Programmiersprache oder technische Möglichkeiten hier schildern:
+----------------------------------------------------------------------------------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----------------------------------------------------------------------------------------+
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Am einfachsten mit einer Funktion - imagecopyresample()
hier eine Varainte wo du die Größen festlegen kannst und wie die neue datei heissen soll. $cfg[] sind von mir global festgelegte standart Werte. Fuchs dich durch oder kopiers und räum drin auf. Ich hab gerade festgestellt wie unordentlich die eigentlich ist. Naja, lang nichts dran gemacht. funktioniert aber sehr fein. Weitere Lösungswege:
http://de2.php.net/manual/en/function.imagecopyresampled.php
Achtung GD Lib zwei muss installiert sein.
function resize_max($the_path, $the_file_name, $server_file_name, $max_size='200'){
global $cfg;
$src_img = imagecreatefromjpeg($the_path . $the_file_name);
$img_w = imagesx($src_img);
$img_h = imagesy($src_img);
if($img_w>$cfg['upload']['max_img_width'] || $img_h>$cfg['upload']['max_img_height']) $errors .= '> Das Bild ist zu groß.<br />';
elseif(($img_w>$max_size)||($img_h>$max_size)) {
if ($img_w < $img_h) {
$new_h = $max_size;
$new_w = $max_size * ($img_w/$img_h);
} else {
$new_h = $max_size * ($img_h/$img_w);
$new_w = $max_size;
}
}
else { // keep size
$new_w = $img_w;
$new_h = $img_h;
}
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagecopyresampled($dst_img, $src_img,0,0,0,0,$new_w, $new_h, $img_w, $img_h);
if(!imagejpeg($dst_img, $the_path . $server_file_name)) $errors .= '> Fehler beim Schreiben des Bildes<br />';
if($errors) return $errors;
else return '';
}
Viel Spass damit.