Så nu har jeg så siddet og leget med koden i lidt over en uge, og har rettet koden helt til...
Så bare for folks skyld har jeg valgt at lægge den nye kode ud...
Har rettet en enkelt ting... Hvis originalbilledet er taget på højkant (dvs højde er større end bredde), så ser thumben grim ud, da den så vil blive 100 pixel bred, og derfor næsten dobbelt så høj som de thumbs som er på almindelig led (dvs bredde er større end højde).
Kiggede derfor på de thumbs som mit normale thumbnail program laver (HTML Slide Show Wizard), og fandt ud af at de thumbs der her er højere end de er brede er 100 pixel høje istedet.
Derfor denne (simple) tilføjelse til Jonas(Decko)'s kdoe:
// Hvis billedet er højere end det er bredt vil vi ikke have det 100 pixel bredt - så bliver billedet for højt - vi laver det istedet 100 pixel højt
if($orgheight > $orgwidth) {
$ratio = $orgwidth / $orgheight; //forhold mellem højde og bredde
$thumbheight = 100; //højden på thumben
$thumbwidth = $thumbheight * $ratio; //find bredden på thumben
} else {
$ratio = $orgheight / $orgwidth; //forhold mellem højde og bredde
$thumbwidth = 100; //bredden på thumben
$thumbheight = $thumbwidth * $ratio; //find højden på thumben
}
... så den fulde kode istedet ser sådan ud:
<?php
function makethumb($path) {
$orgpicture = imagecreatefromjpeg($path);
$orgwidth = imagesx($orgpicture); //find bredden på billedet der skal laves thumb af
$orgheight = imagesy($orgpicture); //og højden
// Hvis billedet er højere end det er bredt vil vi ikke have det 100 pixel bredt - så bliver billedet for højt - vi laver det istedet 100 pixel højt
if($orgheight > $orgwidth) {
$ratio = $orgwidth / $orgheight; //forhold mellem højde og bredde
$thumbheight = 100; //højden på thumben
$thumbwidth = $thumbheight * $ratio; //find bredden på thumben
} else {
$ratio = $orgheight / $orgwidth; //forhold mellem højde og bredde
$thumbwidth = 100; //bredden på thumben
$thumbheight = $thumbwidth * $ratio; //find højden på thumben
}
$thumb = imagecreatetruecolor($thumbwidth, $thumbheight); //vi opretter billedet hvori thumben kommer til at være
imagecopyresampled($thumb, $orgpicture, 0, 0, 0, 0, $thumbwidth, $thumbheight, $orgwidth, $orgheight); //vi kopierer det gamle billede, resizer, og smider det over i thumb-billedet vi lige har lavet
$ext = strrchr($path, '.'); //vi finder filtypen fra stien
$newpath = substr($path, 0, -strlen($ext)); //vi fjerner filtypen fra stien
$newpath .= '.thumb.jpg'; //og skifter den ud med .thumb.jpg
imagejpeg($thumb, $newpath, 100); //vi gemmer vores thumb i mappen med kvalitet 100 (max kvalitet);
}
?>
Indlæg senest redigeret d. 28.06.2006 22:16 af Bruger #5601