Thumbnails

hasemann

Mitglied
Hey Leute!
Ich habe ein Prob und zwar habe ich mir ein Thumbnail Script gebaut zum verkleinern der Bilder die die User hochladen.Jetzt habe ich nur ein Problem damit und zwar die Grösse wenn ich ein Bild verkleinere auf den festen Wert wie ich ihn in dem Script stehen habe dann sehen manche Bilder verzogen aus und manche nicht.Also z.B ein Bild das 640x480 groß ist ist bei der verkleinerung nicht verzogen aber ein Bild was z.B 600x800 groß ist,ist total verzogen habt ihr eine Idee was ich da machen kann hier das Script zum verkleinern.


SCRIPT:
<?php
session_start();
?>
<?php
include("../css und config/config.php");
?>
<?php
if ( isset($_SESSION['name']))
{
$name = $_SESSION['name'];
$bildname = $_FILES['Datei']['name'];
$bildname1 = "th_$bildname";
$bildpfad = $_FILES['Datei']['tmp_name'];
$bildordner = "upload/$bildname";
$bildueberschrift = strip_tags ($_POST['bildueberschrift']);
$datum = date("d.m.Y");
if (file_exists("upload/$bildname"))
{
header ("Location: bilderupload.php?falsch=1");
exit;
}
else
{
move_uploaded_file ( $bildpfad ,"upload/".$_FILES['Datei']['name'] );
$daten = getimagesize ( "$bildordner" );
$neuebr = "150";
$neuehoe = "113";
$bildalt = imageCreateFromJPEG("$bildordner");
$bild = imageCreateTrueColor($neuebr, $neuehoe);
imageCopyResampled($bild, $bildalt,
0, 0,
0, 0,
$neuebr, $neuehoe,
$daten[0],$daten[1]);
imageCopyResized($bildalt,$bild,0,0,0,0,$neuebr,$neuehoe,$daten[0],$daten[1]);
ImageJPEG($bild, "upload/thumbs/th_".$bildname);
$einfuegen = mysql_query( "INSERT INTO thumbs ( datum,name,bildueberschrift,bildklein,bildgross ) values ('$datum','$name','$bildueberschrift','$bildname1','$bildname') ");
header ("Location: bilderupload.php");
exit;

}
}
else
{
echo "Bitte erst einloggen";
}
?>
 
Hi,

wenn das Original ein anderes Höhe/Breite-Verhältnis hat, wie das Thumbnail, ist eine Verzerrung doch logisch. Entscheide Dich, ob Du die neue Höhe oder die neue Breite vorgeben willst und berechne den jeweils anderen Wert aufgrund der Originalmaße, so wie das auch Bildbearbeitungsprogramme machen.

LG

Und pack Deinen Code das nächste mal bitte in die entsprechenden Tags, das mag ja keiner lesen.
 
Zusätzlich kannst du dann ja auch noch eine max. Breite und max. Höhe festlegen.
Ich gucke mal ob ich das Script dafür von mir noch finde... Ist eine ganz feine Sache, dann hast du den gleichen Effekt wie im Windows Explorer.

MfG
 
Zusätzlich kannst du dann ja auch noch eine max. Breite und max. Höhe festlegen.

Finde ich den besten Weg. Dafür habe ich auch noch eine Funktion in der Sammlung:

PHP:
function resizeImage($sourcePath, $destPath, $maxWidth, $maxHeight) {
   $size = getimagesize($sourcePath);
   if($size[1]/$size[0] < $maxHeight/$maxWidth) {
      $newHeight = $maxHeight;
      $newWidth = ceil($size[0]/$size[1] * $newHeight);
   } else {
      $newWidth = $maxWidth;
      $newHeight = ceil($size[1]/$size[0] * $newWidth);
   }
   $image = imagecreatefromjpeg($sourcePath);
   $newImage = imagecreatetruecolor($newWidth, $newHeight);
   imagecopyresized($newImage, $image, 0,0,0,0, $newWidth, $newHeight, $size[0], $size[1]);
   imagejpeg($newImage, $destPath);
   imagedestroy($image);
   imagedestroy($newImage);
}

In dieser Form verkleinert die Funktion so, dass oben und unten, bzw. links und rechts (je nachdem) der Rahmen überlappt würde. Das Ganze habe ich dann per Style im Container zentriert, so dass das Überstehende quasi abgeschnitten wurde.
Kann man natürlich auch anders herum machen, dann hat man halt Ränder.

LG
 
Zuletzt bearbeitet:
Zurück