Avatar billede laksen Nybegynder
15. marts 2005 - 17:43 Der er 7 kommentarer og
1 løsning

Resize, udsnit af billede

Jeg har et velfungerende resize script fra netcoders.dk på min side.

Det kan ses her, hvor det tidligere er omtalt i et spørgsmål: http://eksperten.dk/spm/449302

Jeg har nu 2 spørgsmål:

1) [mest til folk der kender ovennævnte script] Jeg kan kun resize et billede ved at opgive en ny vidde. Kan man også resize et billede vha. omtalte script ved angivelse af en ny højde, hvor vidden så i stedet tilpasses?

2) [det vigtigste spørgsmål] Kan man i stedet for at resize et billede i stedet blot tage et mindre udsnit af billedet? Man har f.eks. et billede, der måler 500X500 pixel. Nu vil jeg gerne have vist et udsnit på 100X100 pixel et nærmere angivet sted i billedet. Det kunne f.eks. være 50 pixel fra venstre og 100 hen og 50 pixel fra toppen og 100 ned.

Er spørgsmål 2) helt sort forklaret, så uddyber jeg gerne.
Avatar billede barklund Nybegynder
15. marts 2005 - 17:46 #1
Ja, det er supernemt at gøre med imagecopyresampled - kig i hjælpen under http://dk2.php.net/imagecopyresampled - det er altså meget simple formler der skal til at resize ud fra forskellige parametre og evt. kun ud fra dele af et billede.
Avatar billede laksen Nybegynder
15. marts 2005 - 18:45 #2
Det var super lige at få de funktioner. Det gjorde det lidt nemmere.

Kan du ikke lave et eksempel på mit spørgsmål 2) ?

Hvis billedet er 500X500 pixel ønsker jeg et udsnit på 100X100 pixel. F.eks. således: (hvert "X" udgør 100X100 pixel)
XXXXX
X-XXX
XXXXX
XXXXX
XXXXX

Jeg ønsker et udsnit i billedet svarende til "-" i X-diagrammet.
Avatar billede barklund Nybegynder
15. marts 2005 - 19:22 #3
Kig på funktionen - det er jo præcis, hvad den kan gøre. Lav et billede af originalen, lav et nyt billede i den ønskede størrelse, kopier fra det ene over i det andet:

$size = array("w" => 100, "h" => 100);
$pos =  array("x" => 100, "y" => 100);
$orig = imagecreatefromjpeg("min.jpg");
$copy = imagecreate($size['w'], $size['h']);
imagecopyresampled($copy, $orig, 0, 0, $pos['x'], $pos['y'], $size['w'], $size['h'], $size['w']+$pos['x'], $size['h']+$pos['y']);

Mere skulle det ikke kræve.

--
Morten Barklund
Avatar billede laksen Nybegynder
15. marts 2005 - 21:55 #4
Tak for eksemplet! Det var super.

Jeg undskylder min manglende evne til at læse om funktionen på egen hånd ;) Nu har jeg i hvert fald forstået det - og det er vel det vigtigste.

Du kan bare lægge et svar, så er pointene dine.
Avatar billede laksen Nybegynder
15. marts 2005 - 22:19 #5
Lige et sidste spørgsmål, hvis du har tid.

Kender du til funktionen imagecreatetruecolor()? Mine udsnit bliver nemlig i for dårlig kvalitet og jeg har læst mig frem til, at den nævnte funktion vist kan lave billedet i bedre kvalitet....
Avatar billede laksen Nybegynder
15. marts 2005 - 22:47 #6
Fandt selv ud af det sidste, så du kan blot lægge et svar....
Avatar billede barklund Nybegynder
15. marts 2005 - 23:20 #7
Yupyup :)
Avatar billede barklund Nybegynder
16. marts 2005 - 10:15 #8
Tark for points :)
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