Bilder temporär verkleinern und anzeigen lassen

splat

Erfahrenes Mitglied
Hallo,
ich habe in meiner mysql db eine Spalte "picture" mit Links zu Bildern die ich mir verkleinert anzeigen lassen möchte.
Ich habe länger nach einem geeigneten Befehl gegoogelt, komme aber nicht wirklich auf eine Lösung. Deshalb meine Frage, mit welchem script könnte man so etwas am einfachsten relasieren?

Für die neuen Bildabmessungen habe ich schon etwas, wobei $breite und $hoehe später über getimagesize für jedes Bild extra ausgelesen werden.

PHP:
$breite=200;
$hoehe=200;

$neuebreite=90;

$div=$breite/$neuebreite; //Hier wird das Verhältnis der neuen und alten Breite errechnet
$neuehoehe=$hoehe/$div; //Hier wird anhand des eben errechneten Verhältnisses die neue Höhe bestimmt.

Hat da jemand eine Idee wie ich so etwas am geschicktesten anstellen kann?

Gruß, Marc
 
du solltest die Bilder schon verkleinert auf deinem Server haben, da auch, wenn du sie nur verkleinert darstellen willst, die Ladezeit gleich bleibt (das Bild selbst ist noch groß)

um das elegant zu automatisieren, kannst du Thumbnails erzeugen lassen (gibt diverse Tuts darüber) und diese dann anzeigen.
 
PHP:
$img = GetImageSize ($file);
$new_x = "370";
header ("Content-Type: image/jpeg");
$faktor = $img[0] / $new_x;
$new_y = $img[1] / $faktor;
$thumb = imagecreatetruecolor ($new_x, $new_y);
switch ($img[2]){
  case "1": $img_source = ImageCreateFromGIF ($file); break;
  case "2": $img_source = ImageCreateFromJPEG ($file); break;
  case "2": $img_source = ImageCreateFromPNG ($file); break;
  default: $img_source = ImageCreateFromWBMP ($file);
}
ImageCopyResampled ($thumb, $img_source, 0, 0, 0, 0, $new_x, $new_y, $img[0], $img[1]);
ImageInterlace ($thumb, 1);
ImageJPEG ($thumb, '', 100);
imagedestroy ($thumb);

@über mir: Ich denke er meinte Thumbnails :rolleyes:
 
PHP:
  case "3": $img_source = ImageCreateFromPNG ($file); break;
Logischerweise muss das case "3" sein.
Falls hier jemand copy & paste macht...
 
won_gak hat gesagt.:
]
PHP:
  case "3": $img_source = ImageCreateFromPNG ($file); break;
Logischerweise muss das case "3" sein.
Falls hier jemand copy & paste macht...

Was aber hier doch nicht vorkommt :P

nebenbei wäre es sinnvoller den Anf#ngern nicht alles in den Popo zu schieben.
 
Danke für eure Antworten!

die Bilder sollten wirklich nur temporär verkleinert werden, da das nur für den admin bereich gedacht ist.
Copy&paste mache ich schon nicht :-) Mir geht es dabei schon auch um den Lerneffekt.
Jetzt muss ich mir erstmal durchlesen was die einzelnen Befehle alles bewirken.. imageinterlace, imagejpeg...
Die Bilder müssen ja nicht top aussehen, vielleicht kann ich ja das ein oder andere weglassen und noch ein bischen optimieren.
Also danke nochmal für alles, jetzt bin ich schonmal ein grosses Stück weiter :-)

Gruß, Marc
 
Hallo noch einmal!

soweit klappt alles wunderbar :-)
Jetzt stehe ich nur vor einem neuen Problem: Ich habe Bilder mit den Maßen 200x500 und welche mit 500x200..
Das Feld in das ich das Bild anzeigen möchte ist nur 300x300 gross.. Die maximalen Werte für Länge und Breite wären also je 300px. Wie kann ich das festlegen? In meinem jetzigen Programm habe ich ja nur einen Wert festgelegt und dadurch kann es vorkommen das ein Bild dennoch zu hoch ist trotz festgelegter Breite.
 
dann müßtest du deine Berechnung per If-Abfrage machen, also:

if($breite<$hoehe)
{
Berechnung...
}
else
{
Berechnung...

}
 
stimmt, das is wohl das leichteste, danke dir!
jetzt geht alles so wie ich es haben möchte! :)

hab nur noch nen problem mit den headers die schon durch nen anderes file gesendet wurden :/
 
Zurück