26. april 2007 - 12:05
Der er
15 kommentarer og 1 løsning
Image-Resize
Hej Eksperter, Jeg skal bruge et Billede-Resize script som gør dette: Tager billedet finder den korteste akse, og ændrer denne til X(f.eks. 100px), derefter klipper den enderne af den lange akse så denne også bliver X lang. Så billedet derefter bliver XxX, uden billedekvalitet ændret =) På forhånd tak.
Annonceindlæg fra Infor
26. april 2007 - 12:06
#1
uden billedekvalitet ER ændret :D
26. april 2007 - 12:17
#2
Du bør langt af vejen kunne bruge denne funktion: function resize( $filename, $newfilename, $max) { $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $max / $ow; $hscale = $max / $oh; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); imagejpeg( $dstim, $newfilename, 100); imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); }
26. april 2007 - 12:25
#3
Det vil jeg lige prøve, så vender jeg tilbage, og tak for det hurtige svar :D
26. april 2007 - 12:38
#4
Jeg ved ikke om jeg har misset noget, men når jeg tester sådan her: <?php function resize( $filename, $newfilename, $max) { echo "1"; $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $max / $ow; echo "2"; $hscale = $max / $oh; $scale = ( $hscale < $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); echo "3"; $dstim = imagecreatetruecolor( $nw, $nh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh ); imagejpeg( $dstim, $newfilename, 100); imagedestroy( $dstim ); echo "4"; imagedestroy( $srcim ); return file_exists($newfilename); echo "5"; } resize( 'hej.jpg', 'lort', 100 ); ?> Så når den kun til echo "4"; Ved du hvad problemet er =)?
26. april 2007 - 12:48
#5
Ja, funktionen stopper ved return! Du kan teste på følgnede måde: lav en mappe og kald den f.eks. test chmod mappen 777 Smid scriptet og hej.jpg i den mappe. Så skal du huske at kalde funktionen: resize( 'hej.jpg', 'lort.jpg', 100 ); Bliver der så oprettet en fil ved navn lort.jpg?
26. april 2007 - 13:04
#6
Nu fik jeg det til at virke, havde glemt 777. return file_exists($newfilename); virker stadig ikke, men gør ikke så meget da scriptet virker fint. Dog ikke som jeg havde håbet. Den resizer bare til 87x100
26. april 2007 - 13:59
#7
Jeg ville gerne have at den resizer den korte side til 100, også hvis så den er 100x140, så klipper den 20px af i hvert side, så den bliver 100x100 :)
26. april 2007 - 19:01
#8
(der tages forbehold for stavefejl og gibberish)
26. april 2007 - 20:01
#9
Så tror jeg den var der: <?php //http://www.eksperten.dk/spm/775295 $test = 'picture.jpg'; $temp = 'test.jpg'; function resize( $filename, $newfilename, $max) { $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $max / $ow; $hscale = $max / $oh; $scale = ( $hscale > $wscale ? $hscale : $wscale ); $nw = round( $ow * $scale, 0 ); $nh = round( $oh * $scale, 0 ); $dstim = imagecreatetruecolor( $max, $max ); if($nh > $nw) { $diff = ($nh - $max)/2; imagecopyresampled( $dstim, $srcim, 0, 0, 0, $diff, $max, $max+$diff, $ow, $oh); } elseif($nh < $nw) { $diff = ($nw - $max)/2; imagecopyresampled( $dstim, $srcim, 0, 0, $diff, 0, $max+$diff, $max, $ow, $oh); } else { imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $max, $max, $ow, $oh); } imagejpeg( $dstim, $newfilename, 100); imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); } resize($test,$temp,100); ?>
26. april 2007 - 20:06
#10
Hej jeg håber ikke at det gør noget jeg lige skriver her, men jakobdo, du ligner en der er en haj til det der resize, vil du hjælpe mig her evt?
26. april 2007 - 20:08
#11
Jeg er ikke haj, er bare god til at prøve mig frem! :o) Men hvis ikke du spammer zurekk's tråd, så kan du spørge løs! (ellers opret et nyt spørgsmål, så skal jeg eller andre eksperter kigger på det)
26. april 2007 - 21:27
#13
Lige præcis jakob, tusind tak, igen :D
26. april 2007 - 21:27
#14
Og smid et svar :D
26. april 2007 - 21:31
#15
Svar!
26. april 2007 - 21:48
#16
Takker for point.
Vi tilbyder markedets bedste kurser inden for webudvikling