Avatar billede hvidlogspusher Nybegynder
21. januar 2004 - 12:35 Der er 16 kommentarer

lave thumbnails med php+GD

jeg er ved at lave et script der blandt andet skal lave thumbnails med php og GD. Mit problem er nu dette:
Jeg har f.eks. 2 billeder et på 300*175 og et 385*100 og begge skal laves til thumbnails og begge skal have den samme størrelse lad os sige 120*60, hvis jeg blot resizer dem så ryger de jo ud af propetions så derfor er jeg vel nødt til at klippe noget fra men jeg aner ikke hvordan... nogen der har en løsning ?
Avatar billede Slettet bruger
21. januar 2004 - 13:20 #1
Lytter med..
Avatar billede smirnoff Nybegynder
21. januar 2004 - 13:34 #2
hvordan du regner den ud eller hvilke funktioner du skal bruge ?
Avatar billede hvidlogspusher Nybegynder
21. januar 2004 - 13:35 #3
begge dele
Avatar billede hvidlogspusher Nybegynder
21. januar 2004 - 14:22 #4
slet ingen ideer ?
Avatar billede googolplex Novice
21. januar 2004 - 14:39 #5
Jeg er ikke helt sikker på hvad du mener, men på http://googolplex.dk/thumbnail.php har billedet til venstre og til højre ikke samme størrelse, men thumbnailen tilpasses derefter.
Avatar billede hvidlogspusher Nybegynder
21. januar 2004 - 14:55 #6
jeg har 2 billeder der ikke har samme propationer men jeg vil lave thumbs af de 2 hvor 2 thumbs begge har den samme størrelse
Avatar billede hvidlogspusher Nybegynder
21. januar 2004 - 14:58 #7
altså:
billede a: 455*125 skal laves til f.eks. 125*125
billede a: 421*323 skal også laves til 125*125
Avatar billede smirnoff Nybegynder
21. januar 2004 - 14:58 #8
du kan bruge (hvis billederne skal vises i truecolor) imagecreatefromjpeg, imagecreatetruecolor og imagecopyresampled

hvis billederne altid er med bredden større end højden og større end dine thumbs kan du regne det sådan:

org_bredde = 300
org_højde = 175

find aspekt = org_bredde/120 (300 / 120 = 2,5)
find ny højde  = org_højde / aspekt (175 / 2,5 = 70)

så har du din thumbnail med en difference på 10 pixels

prøv så:

$sizes = getimagesize("ditbillede.jpg")

$sizex = $sizes[0];
$sizey = $sizes[1];

$destimage = imagecreatetruecolor(120, 60);

$aspekt = $sizex / 120; (2,5)
$desty = $sizey / $aspekt; (70)

$difference = ($desty-60)/2; (5)

imagecopyresized($destimage, $srcimage, 0, 0, 0, $difference, $destx, $desty, $sizex, $sizey);

imagejpeg($destimage);
Avatar billede smirnoff Nybegynder
21. januar 2004 - 14:59 #9
.. du skal lige selv huske at tage højde for billeder som er enten  mindre eller hvor højden overstiger bredden
Avatar billede hvidlogspusher Nybegynder
21. januar 2004 - 15:12 #10
hmmmm jeg prøvede lige din kode af med et billede der er 160bred og 120 høj og prøvede at lave den om til 120høj og 60bred men fik denne fejl:

Warning: imagecopyresized(): Invalid image dimensions in .../.../save.php on line 60
ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ
Avatar billede smirnoff Nybegynder
21. januar 2004 - 17:00 #11
ja ok -- du skal i toppen af php-scriptet sætte dette ind:

header("Content-type: image/jpeg");

- men så vil browseren ikke kunne vise text, så du bør kopire thumbnailen over i en fil som du henter ind i et <img src="..."> tag.

... desuden skal du lige oprette $srcimage -

$srcimage = imagecreatefromjpeg("ditbillede.jpg");
Avatar billede hvidlogspusher Nybegynder
22. januar 2004 - 00:58 #12
det gør jeg også:($pic er et array med billeder jeg køre gennem en for løkke)
$srcimage = ImageCreateFromJPEG($pic[$i]);
$sizes = getimagesize($pic[$i]);
$sizex = $sizes[0];
$sizey = $sizes[1];
$destimage = imagecreatetruecolor(120, 60);
$aspekt = $sizex / 120;
$desty = $sizey / $aspekt;
$difference = ($desty-60)/2;
imagecopyresized($destimage, $srcimage, 0, 0, 0, $difference, $destx, $desty, $sizex, $sizey);
imagejpeg($destimage);
Avatar billede smirnoff Nybegynder
22. januar 2004 - 10:10 #13
hmm - har du prøvet med eet billede adgangen

desuden bør du bruge imagecopyresampled istedet for imagecopyresized (ikke at løser problemet men det genererer billedet i truecolor)

prøv og at udmarker header(..) og den nederste linie imagejpeg($destimage) og skriv nogle af $size og $dest variablene ud ... så kan du se hvad den får regnet ud
Avatar billede hvidlogspusher Nybegynder
22. januar 2004 - 10:22 #14
okay jeg poster en kommentar med det senere i dag
Avatar billede hvidlogspusher Nybegynder
23. januar 2004 - 13:49 #15
uanset hvad jeg gør så regner den desty ud til at være ingenting
Avatar billede smirnoff Nybegynder
24. januar 2004 - 10:55 #16
hmm - det lyder da mærkeligt ... hvad bliver aspekt?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester