FInde den fehler mit imagecopyresized nicht

der Code sieht folgendermassen aus
PHP:
<?php
$file = 'fotos/Hochzeit/DSC_0774.jpg';


list($width, $height) = getimagesize($file);
     $maxheight = 200;
     $faktor =        $height / $maxheight;
$newwidth = ceil($width / $faktor);
$newheight = ceil($height / $faktor);
$tumb = 'fotos/Hochzeit/DSC_0774_small.jpg';
$pic =   $file;



       if(imagecopyresized($tumb,$pic,0,0,0,0,$newwidth,$newheight,$width,$height)){
                        echo 'true!!';
                      }else{
                        echo 'false =
                        <br />Original '.$pic.'
                        <br />Tumb '.$tumb.'
                        <br />width '.$width.'
                        <br />Height '.$height.'
                        <br />maxhight '.$maxheight.'
                        <br />faktor '.$faktor.'
                        <br />newwidth  '.$newwidth.'
                        <br /> newheight '.$newheight;
                      }


?>

Als ausgabe bekomme ich :

Code:
false =
Original fotos/Hochzeit/DSC_0774.jpg
Tumb fotos/Hochzeit/DSC_0774_small.jpg
width 4715
Height 3143
maxhight 200
faktor 15.715
newwidth 301
newheight 200
 
Das liegt ganz klar daran, dass du die Dateinamen der Fotos übergibst. Dies entspricht nicht dem Format, welches imagecopyresized() akzeptiert!

Und ob Leerzeichen vor oder hinter einem mathematischen Operator vorkommen, ist übrigens gleichgültig.
 
bitte etwas genauer? wenn ich die Dokumentation ansehe, verwenden sie dort auch jpg? ich habe aber bereits davon gehört das es verschiedene jpg formate gibt, wo und wie komm ich dahinter?
 
Die Funktionssignatur schaut so aus:
Code:
bool imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
Die ersten zwei Parameter sind Ressourcen, können also schon mal keine Strings sein. Das wäre der erste Anhaltspunkt, wieso man keine Strings übergeben darf.

Der zweite Anhaltspunkt folgt bei der genauen Beschreibung der Parameter:
Code:
dst_image: Destination image link resource.
src_image: Source image link resource.
Sie sollen "image link resource[s]" sein. Nun stellt sich die Frage, wie du aus einer Datei GD2-Objekte (=Ressourcen) bekommst. Dafür gibt es die "imagecreatefrom***"-Funktionen, beispielsweise wäre für dich die imagecreatefromjpeg-Funktion relevant.
 
das hilft mir weiter!...... nur.... wenn ich das richtig verstehe, ist das die falsche funktion um ein vorschau bild zu generieren, respektive, ein small version auf dem server zu speichern (im gleichen ordner) ????
 
Auf welche Funktion beziehst du dich?
imagecopyresized() kann durchaus für sowas benutzt werden.
 
sorry..... ich bin langsam müde :)...... ich bin vor kurzem auf java-android programmieren umgestiegen, und muss mich jetzt da wieder zurechtfinden. bei den beispielen wird nur jedesmal von einer ausgabe berichtet, nicht aber von einem abspeichern auf dem server..... ich habe jetzt das (und es funzt) jedenfalls habe ich eine bildausgabe im explorer: dazu habe ich den header einfügen müssen und imagecreatefromjpeg,imagecreatetruecolor ..... nirgends aber mehr eine url für das abspeichern.

Code:
<?php

header('Content-Type: image/jpeg');
$file = 'fotos/Hochzeit/DSC_0774.jpg';
$source = imagecreatefromjpeg($file);

list($width, $height) = getimagesize($file);
     $maxheight = 200;
     $faktor =        $height / $maxheight;
$newwidth = ceil($width / $faktor);
$newheight = ceil($height / $faktor);
$tumb = imagecreatetruecolor($newwidth, $newheight);
$pic =   $file;



       if(imagecopyresized($tumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height)){

                      }else{
                        echo 'false =
                        <br />Original '.$pic.'
                        <br />Tumb '.$tumb.'
                        <br />width '.$width.'
                        <br />Height '.$height.'
                        <br />maxhight '.$maxheight.'
                        <br />faktor '.$faktor.'
                        <br />newwidth  '.$newwidth.'
                        <br /> newheight '.$newheight;
                      }

    imagejpeg($tumb);
?>

Jedoch weiss ich nicht wie ich jetzt dieses Bild speichern soll? währe toll wenn du mir dieses mysterium lösen könntest ;)
 
Dafür gibt es die image[jpeg/gif/png]-Funktionen. Wenn du bspw. eine JPEG ausgeben willst, nimmst du imagejpeg

PHP:
if(imagecopyresized($tumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height)){
  // 100 = Qualität, reicht von 0 (schlecht) bis 100 (sehr gut)
  imagejpeg($tumb, 'dateiname.jpg', 100);

  // Evtl. noch Returncode von imagejpeg() auf TRUE überprüfen,
  // bei FALSE Fehlermeldung ausgeben
}

PS: Ich sehe gerade, dass du imagejpeg() schon im letzten Code verwendet hast. Du hättest dir nur noch die Dokumentation zu imagejpeg() anschauen müssen, denn letztlich sind die zwei weiteren Parameter für das Speichern in eine Datei verantwortlich.
 
Zurück