Alle Bilder mit derselben Größe

vquicksilver

Mitglied
Hallo ich habe eine kleine Gallery mit php umgesetzt und möchte nun das wenn man bilder hochlädt alle Bilder in der selben grösse als vorschau angezeigt werden damit die Übersicht der Bilder ordentlich angezeigt wird. Ich suche also quasi eine möglichkeit oder eine Funktion die aus bildern die z.b. 1024x768 ein thumb macht welches 100x100 ist aber in einbehaltung der Propotionalen verhältnisse. Das ist natürlich nur möglich wenn man das Bild Abschneidet. Das wäre natürlich nicht so schlimm solange alle vorschaubilder ordentlich gleichgroß sind. Ich habe zwar eine Funktion welches thumbnails in einbehaltung der seitenverhältnisse ein thumb generiert aber da ist das thumb dann natürlich nicht 100x100 sondern halt 100x75 und das passt dann optisch nicht rein wenn dann mal ein bild quer anstatt hoch ist.

wäre schön wenn da jemand eine lösung parat hätte.

Danke
 
So das ist nun ein script. Aber der bg des bildes ist dann immer schwarz.. kann mir wer sagen wie ich den auf z.b. weiss ändere?

PHP:
<?
header("Content-Type: image/jpeg");
$myImage = $_REQUEST['image'];
$type = $_REQUEST['type'];
$src_img = imagecreatefromjpeg("./images/".$myImage);

// set maximum values for the output image.
// maximum horizontal px
$max_width = 600;

// maximum vertical px
$max_height = 600; 

// determine the highest diference for vertical or horizontal.
$current_width = imagesx($src_img);
$current_height = imagesy($src_img);

// check if the image does not math the contraint.
if ($current_width > $max_width || $current_height > $max_height) {

    if ($current_height > $current_width) {

        // image height is greater than image width
        $new_width = $current_width/$current_height*$max_height;
        $dest_img = imagecreatetruecolor($new_width, $max_height);
        imagecopyresized($dest_img, $src_img, 0,0,0,0, $new_width, $max_height, imagesx($src_img), imagesy($src_img));

        imagejpeg($dest_img);
        imagedestroy($dest_img);
        imagedestroy($src_img);

    } else {

        // image width is greater than image height
        $new_height = $current_height/$current_width*$max_width;
        $dest_img = imagecreatetruecolor($max_width, $new_height);
        imagecopyresized($dest_img, $src_img, 0,0,0,0, $max_width, $new_height, imagesx($src_img), imagesy($src_img));
        imagejpeg($dest_img); imagedestroy($dest_img); imagedestroy($src_img);

    }

} else {

    imagejpeg($src_img);
    imagedestroy($src_img);

}
?>
 
imagecreatetruecolor erstellt ein neues Bild mit schwarzem Hintergrund. Du kannst zuerst noch ein weisses Viereck in den Hintergrund zeichnen. Ist natürlich nicht besonders schön gelöst.
Wieso sieht man denn den Bg? Das Ursprungsbild, füllt das dass neue nicht 100%ig aus oder wie?

;)
 
Nein es leider nicht so wie ich mir das vorgestellt habe. Ich hatte ja eigentlich vor das das bild abgeschnitten wird und so die bilder alle gleichgross sind als thumb. Aber leider bekomme ich das irgendwie nicht hin ;( kann mir da keiner helfen ?
 
Hab mir auch schonmal ein Galeriescript geschrieben. Die Thumbnails habe ich mit folgender Funktion erstellt

PHP:
function createThumb($file, $thumbheight, $ratio, $album)
    {
        if( !is_readable($file))
        {
            die("Die Datei " . $file . " konnte nicht gelesen werden. <br>");
        }
        
        $image = ImageCreateFromJpeg($file);
        $x = ImageSX($image);
        $y = ImageSY($image);
        
        if ($ratio == 3/4)
        {
            $newheight   = ($thumbheight / (3/4));
            $newwidth    = $thumbheight;
        }
        elseif ($ratio == 4/3)
        {
            $newwidth   = ($thumbheight * (4/3));
            $newheight  = $thumbheight;
        }
        
        $thumb = ImageCreateTrueColor($newwidth, $newheight);
        $source = ImageCreateFromJpeg($file);
        
        ImageCopyResampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $x, $y);
        ImageJpeg($thumb, "thumbs/$album/thumb_$file", 100);
        
        $thumb_path     =   "thumbs/$album/thumb_$file";
        return $thumb_path;
    }

Vielleicht hilfts dir ja weiter ;-)

EDIT:
Achso für die Ratio habe ich diese Funktion verwendet:

PHP:
    function checkRatio($file)
    {
        $image = ImageCreateFromJpeg($file);
        $x = ImageSX($image);
        $y = ImageSY($image);   
        
        $verhaeltnis = ($x / $y);
        
        if ( $verhaeltnis == 4/3 )
        {
            return 4/3;
        }
        elseif ( $verhaeltnis == 3/4 )
        {
            return 3/4;    
        }
        else
        {
            die("Das Bild " . $file . " ist nicht im Verhältnis von 4/3 oder 3/4");
        }
        
    }
 
Zuletzt bearbeitet:
Hi
Im Verhältnis Wenn da was abgeschnitten werden würde, dann würden ja Teile des Bildes fehlen 0_o
 
Zurück