lilminime Skrevet 14. oktober 2006 Del Skrevet 14. oktober 2006 (endret) Hei. Jeg har søkt litt på google, men (kanskje) siden jeg ikke er så god til og søke fant jeg det ikke. Problemet mitt lyder slik; Jeg trenger et php script som bruker gd til og minske bilder til feks 24x24. Jeg har funnet og fått til og virke andre thumbs script, men de resizer bilde mindre, men de gjør ikke slik at høyden og bredden blir lik. Og vis jeg setter dette i html blir bilde ikke seende fint ut, da blir det strekt ene veien. Noen som vet om et script (eller kan poste ett her) som lager thumbs bilde hvor sidene blir like lange, men det ikke blir strekt eller sånn. Vet det finnes, har bare ikke funnet selve scriptet:P Edit: fant et eksempel. Se på hvilken som helst profil her på diskusjon.no, alle brukere som har postet bilde i sin profil har i etterkant et bilde på profilen som er like bred som lang. Tusen takk Endret 14. oktober 2006 av [email protected] Lenke til kommentar
lilminime Skrevet 16. oktober 2006 Forfatter Del Skrevet 16. oktober 2006 Ikke for og være en bumpet, men er det fordi ingen skjønner hva jeg mener eller er det vanskelig og få til? takk uansett... Lenke til kommentar
crysys Skrevet 16. oktober 2006 Del Skrevet 16. oktober 2006 Vel først og fremst må jeg jo få si det at viss bilde ikke er kvadratisk i utgangspunkt, så vil blide bli strukket den ene eller den andre veien uansett... Her en kodesnutt som jeg laga for en stund siden. Resultat blir at jpeg bilde av ønsket høyde/bredde: @file Filnavn @path Sti til filen @prefix Prefiks til nytt filnavn @newwidt @newhight Størrelse (oppgi heltal) function resize($file,$path,$prefix,$newwidth,$newheight) { $filename = $path ."/". $file; $image_type = strstr($filename, '.'); switch($image_type) { case '.jpg':$source = imagecreatefromjpeg($filename);break; case '.png':$source = imagecreatefrompng($filename); break; case '.gif':$source = imagecreatefromgif($filename);break; default: echo("Error Invalid Image Type"); return; break; } list($width, $height) = getimagesize($filename); $thumb = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); $im = $path . "/" . $prefix. $file; print("\nOld: " .$filename."\n\tNew: ".$im); imagejpeg($thumb, $im, 60); } Lenke til kommentar
Peter Skrevet 16. oktober 2006 Del Skrevet 16. oktober 2006 Antakelig bedre å finne den lengste siden av bildet, lage denne til 24px, og heller lage den korteste siden i samme forhold. Lenke til kommentar
kakkle Skrevet 16. oktober 2006 Del Skrevet 16. oktober 2006 (endret) Vel Nazgul, da får han jo det han allerede har. Men enig at det nok er den beste løsningen, dersom han vil ha med hele bildet. Som Crysys sier, så vil bildet bli strekt dersom bredde og høyde forholdet er ulik 1, og du vil ha med hele bildet. Det du derimot kan gjøre, er å klippe ut litt av bildet. Hvis du f.eks vil ha et bilde på 24x24, og bildet opprinnelig er på 1024x768, så kan du forminske bildet slik at den korteste siden blir 24. Også kan du bare klippe ut f.eks 24px av midten av bildet, eller 24px fra venstre hjørne eller hva du vil. Alt dette kan gjøres vha gd. Se på imagecopyresampled EDIT: Et lite eksempel : Du har et bilde som du har resizet til 24x48 pixler: $newwidth=24; $newheight=24; $info = getimagesize($file); $cutx = ($info[0]/2)-($newwidth/2); $cuty = ($info[1]/2)-($newheight/2); imagecopyresampled($img_dst, $img_src, 0, 0, $cutx, $cuty, $newwidth, $newheight, $info[0], $info[1]); $cutx blir da: (24/2)-(24/2)=0 $cuty blir da: (48/2)-(24/2)=24-12 = 12 Det vil si at den vil kutte bildet ved x=0 og y=12 (På dette punktet vil øvre venstre hjørne av det nye bildet bli) Hvilket igjen betyr at du "bare" mangler 12px fra toppen og bunnen av bildet... OBS: Scriptet er ikke testet i det hele tatt. /K Endret 16. oktober 2006 av kakkle Lenke til kommentar
lilminime Skrevet 17. oktober 2006 Forfatter Del Skrevet 17. oktober 2006 Takk nazgul for svar, og takk kakkle for svar. Kakkle's svar var egentlig mest det jeg var ute etter, og kutte vekk litt av bilde vis det overgår feks 24px på en side. Var vell jeg som var for dårlig til og forklare.. Thnxz anyway folkens! skal teste scriptet ditt kakkle iløpet av dagen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå