URL: https://www.overclockers.at/coding-stuff/php_problem_beim_thumbnail_erstellen_146686/page_1 - zur Vollversion wechseln!
Irgendwie will das nicht:
Code: PHP<?php error_reporting(E_ALL); if ($handle = opendir('pics')) { $i = 0; while(false !== ($file = readdir($handle))){ if( $file != "." && $file != ".." ){ $info = getimagesize('./pics/' . $file); if( $info['mime'] == 'image/jpeg' ){ $breitalt = $info[0]; $hochalt = $info[1]; $breit = 100; $hoch = ceil($hochalt*$breit/$breitalt); if( $breitalt > $breit ){ $bildalt = imagecreatefromjpeg('./pics/' . $file); $bildneu = imagecreate($breit , $hoch); imagecopyresized($bildneu , $bildalt , 0 , 0 , 0 , 0 , $breit , $hoch , $breitalt , $hochalt); header("Content-Type: image/jpeg"); imagejpeg($bildneu); imagedestroy($bildalt); imagedestroy($bildneu); } }else{ echo '<a href="./pics/' . $file . '" alt="">' . $file . '</a>'; } $i++; } #if( $i % 5 == 0 ) echo '<br />'; } closedir($handle); } ?>
Code: PHP<?php error_reporting(E_ALL); $breit = 100; $quellbild = './pics/katze.jpg'; $info = getimagesize($quellbild); $breitalt = $info[0]; $hochalt = $info[1]; $hoch = ceil($hochalt*$breit/$breitalt); if( $breitalt > 100 ){ $bildalt = imagecreatefromjpeg($quellbild); $bildneu = imagecreate($breit , $hoch); imagecopyresized($bildneu , $bildalt , 0 , 0 , 0 , 0 , $breit , $hoch , $breitalt , $hochalt); header("Content-Type: image/jpeg"); imagejpeg($bildneu); imagedestroy($bildalt); imagedestroy($bildneu); } ?>
Zwei dinge:
Einerseits solltest du dir den Ablauf eines Seitenaufbau's einer Homepage klarmachen.
Andererseits wäre es praktisch, würdest du deinen Code so formatieren, dass man nicht beim lesen schon durcheinander kommt.
Achja, und noch... Kommentare... Ich denke wenn du dir Kommentare reinschreibst, die visualisieren was du machen willst, wirst du auch gleich erkennen wo du den Denkfehler untergebracht hast.
BTW: Die Schleife an sich ist nicht Schuld...
Code: PHP<?php error_reporting(E_ALL); if ($handle = opendir('pics')) { $i = 0; # Schleife, die alle Dateien in dem Ordner durchgeht while(false !== ($file = readdir($handle))){ if( $file != "." && $file != ".." ){ # informationen von dem bild werden eingeholt $info = getimagesize('./pics/' . $file); # wenn das bild ein jpg ist, soll es verkleinert werden if( $info['mime'] == 'image/jpeg' ){ $breitalt = $info[0]; # derzeitige breite $hochalt = $info[1]; # derzeitige höhe $breit = 100; # gewünschte neue breite $hoch = ceil($hochalt*$breit/$breitalt); # gewünschte neue höhe wird im verhältnis zur gewünschten breite ausgerechnet if( $breitalt > $breit ){ # wenn das bild schon kleiner als die gewünschte breite ist, braucht es nicht verändert werden $bildalt = imagecreatefromjpeg('./pics/' . $file); # bild mit den originalen größen wird erzeugt $bildneu = imagecreate($breit , $hoch); # ein neues leeres bild mit den neuen höhen wird erstellt imagecopyresized($bildneu , $bildalt , 0 , 0 , 0 , 0 , $breit , $hoch , $breitalt , $hochalt); # bild mit neuen größen wird in $bildneu gespeichert header("Content-Type: image/jpeg"); # browser wird auf ein jpeg "vorbereitet" imagejpeg($bildneu); # bild wird ausgegeben imagedestroy($bildalt); imagedestroy($bildneu); } # wenn das bild kein jpg ist, soll es einfach nur mit link anklickbar sein (wird hier nur testweise so gemacht) }else{ echo '<a href="./pics/' . $file . '" alt="">' . $file . '</a>'; } $i++; } #if( $i % 5 == 0 ) echo '<br />'; } closedir($handle); } ?>
Damit ich das richtig versteh: Du willst
das wirklich so haben?Code: PHPif( $file != "." && $file != ".." ){ . . . }else{ echo '<a href="./pics/' . $file . '" alt="">' . $file . '</a>'; }
Ich hab das hier nur (zumindest für mich) lesbarer gestaltet...
Ja, dio hat's schon angedeutet...Code: PHP<?php error_reporting(E_ALL); if ($handle = opendir('pics')) { $i = 0; # Schleife, die alle Dateien in dem Ordner durchgeht while(false !== ($file = readdir($handle))){ if( $file != "." && $file != ".." ){ # informationen von dem bild werden eingeholt $info = getimagesize('./pics/' . $file); # wenn das bild ein jpg ist, soll es verkleinert werden if( $info['mime'] == 'image/jpeg' ){ # derzeitige breite $breitalt = $info[0]; # derzeitige höhe $hochalt = $info[1]; # gewünschte neue breite $breit = 100; # gewünschte neue höhe wird im verhältnis zur gewünschten breite ausgerechnet $hoch = ceil($hochalt*$breit/$breitalt); # wenn das bild schon kleiner als die gewünschte breite ist, braucht es nicht verändert werden if( $breitalt > $breit ){ # bild mit den originalen größen wird erzeugt $bildalt = imagecreatefromjpeg('./pics/' . $file); # ein neues leeres bild mit den neuen höhen wird erstellt $bildneu = imagecreate($breit , $hoch); # bild mit neuen größen wird in $bildneu gespeichert imagecopyresized($bildneu , $bildalt , 0 , 0 , 0 , 0 , $breit , $hoch , $breitalt , $hochalt); # browser wird auf ein jpeg "vorbereitet" header("Content-Type: image/jpeg"); # bild wird ausgegeben imagejpeg($bildneu); imagedestroy($bildalt); imagedestroy($bildneu); } # wenn das bild kein jpg ist, soll es einfach nur mit link anklickbar sein (wird hier nur testweise so gemacht) }else{ echo '<a href="./pics/' . $file . '" alt="">' . $file . '</a>'; } $i++; } #if( $i % 5 == 0 ) echo '<br />'; } closedir($handle); } ?>
Zitat von watchoutWenn du ein Bild resizen willst und dann ausgeben darf das nur der absolut einzige Content sein den du ausgibst - nur das Bild, sonst nichts. Wenn du ne Fehlermeldung hast, zerstört die das Bild - Genauso jede andere Ausgabe (per echo, print,...). Der richtige Header fehlt in deinem Fall auch noch.
Ich versteh zwar deine Frage nicht richtig, aber:
Code: PHP<img src="bildscript.php?id=123">
genauso wie es dio schon gesagt hat!Zitat von tomstigSowas in der Art hab ich mir schon gedacht, nur wie funktionieren dann alle Galerien mit Thumbnails?
Das ist das also nicht möglich...
Egal, dann bau ich halt ein Script, dass alle Bilder durchgeht, sie verkleinert, und speichert... wird am einfachsten gehen...
was ist nicht möglich? Ich versteh dein Problem nicht...
ich glaub er meint das direkt ausgeben eines bildes mit php inkl. zusätzlichem senden von text.
Ich persönlich bevorzuge sowieso die speicherung des thumbnails auf dem server ... spart einiges an performancen, finde ich.
Zitat von watchoutwas ist nicht möglich? Ich versteh dein Problem nicht...
klar ist das möglich.Zitat von tomstigIst das möglich?
Zitat von watchoutklar ist das möglich.

möchtest du Hilfe oder jemanden der dir dein Script schreibt?Zitat von tomstigDeine Antwort hat mich - genau wie die anderen in diesem Thread - um Eckhäuser weitergebracht
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026