17. juni 2006 - 10:47
Der er
18 kommentarer
resize JPEG billeder i php
Hej eksperten. Jeg bruger dette script der kan resize et billede, men det virker åbenbart ikke hvis formatet er JPEG. Jeg tænker at man måske kan rename JPEG billedet til JPG og derefter resize det ?? er der nogle der har nogle gode ideer, eller et script der kan hjælpe mig med dette problem.? function resize( $filename, $newfilename, $maxw, $maxh ) { $result = false; $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $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 ); $result = imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return $result; } resize($path."/".$filename, $path."/".$filename, 100,100);
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Du kan resize mange billeder, men det er rigtigt, den funktion der tager kun jpeg. Du kan evt rette denne linie: $srcim = imagecreatefromjpeg( $filename ); til: $srcim = imagecreatefromgif( $filename); eller $srcim = imagecreatefrompng( $filename); Der findes også kode på nettet, som kan lave: $srcim = imagecreatefrombmp( $filename); Men det er ikke standard php funktion.
Mange tak for dit svar. Det virker desværre ikke med: $srcim = imagecreatefromgif( $filename); eller $srcim = imagecreatefrompng( $filename); skal jeg også ændre $result = imagejpeg( $dstim, $newfilename, 85 );? scriptet skal også ende op med at resize til en JPEG/JPG eller GIF da billederne skal vises på en mobil telefon til sidst
Hvis du blot retter som jeg skrev i: 17/06-2006 11:07:12 Så vil den tage et gif, eller png og altid gemme det som et jpeg billede. Så du må ikke kalde filerne det samme. F.eks.: resize($path."/".$filename, $path."/".$filename.".jpg", 100,100);
Jeg forstå det ikke helt, jeg uploader et JPEG billeder til Scriptet, det resize den ikke, men alle andre billede formater virker fint nok. function resize( $filename, $newfilename, $maxw, $maxh ) { $result = false; $srcim = imagecreatefromgif( $filename); //$srcim = imagecreatefrompng( $filename); //$srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $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 ); $result = imagejpeg( $dstim, $newfilename, 60 ); imagedestroy( $dstim ); imagedestroy( $srcim ); return $result; } resize($path."/".$filename, $path."/".$filename.".jpg", 100,100);
Prøv denne funktion: function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = NULL; $ext = strtolower(end(explode($filename))); switch($ext) { case 'jpg': case 'jpeg': $srcim = imagecreatefromjpeg( $filename ); break; case 'gif': $srcim = imagecreatefromgif( $filename); break; case 'png': $srcim = imagecreatefrompng( $filename); break; default: //Her er opstået en fejl... } $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $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 ); switch($ext) { case 'jpg': case 'jpeg': $result = imagejpeg( $dstim, $newfilename, 60 ); break; case 'gif': $result = imagegif( $dstim, $newfilename ); break; case 'png': $result = imagepng( $dstim, $newfilename ); break; default: //Her er opstået en fejl... } imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); } Og så kalder du den med: resize($path."/".$filename, $path."/".$filename, 100,100); $filename kan være: jpg,jpeg,gif eller png filer.
du burde nok list(,,$text) = getimageeize($filename); $text indeholder så den filtype der står i headeren på input filen. Filnavne er nemme at ændre, og de fleste programmer er ligeglade hvis selve filtypen og filnavnet ikke passer sammen.
hov!
http://dk.php.net/manual/da/function.getimagesize.php getimagesize giver tal til de forskellige formater.
så du for at tilpasse sig til jakobdo's kode burde det se sådan her ud.
list(,,$text) = getimageeize($filename);
$tmp = array(,"gif","jpg","png");
$text = $tmp[$text];
hvor skal det stykke kode indsættes?
17. juni 2006 - 12:40
#10
istedet for: $ext = strtolower(end(explode($filename))); og det skal være $ext og ikke $text kan jeg se nu.
17. juni 2006 - 12:43
#11
Jeg får denne fejl : Parse error: syntax error, unexpected ',', expecting ')'
17. juni 2006 - 12:46
#12
function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = NULL; list(,,$ext) = getimageeize($filename); $tmp = array(,"gif","jpg","png"); $ext = $tmp[$text]; switch($ext) { case 'jpg': case 'jpeg': $srcim = imagecreatefromjpeg( $filename ); break; case 'gif': $srcim = imagecreatefromgif( $filename); break; case 'png': $srcim = imagecreatefrompng( $filename); break; default: //Her er opstået en fejl... } $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $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 ); switch($ext) { case 'jpg': case 'jpeg': $result = imagejpeg( $dstim, $newfilename, 60 ); break; case 'gif': $result = imagegif( $dstim, $newfilename ); break; case 'png': $result = imagepng( $dstim, $newfilename ); break; default: //Her er opstået en fejl... } imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); }
17. juni 2006 - 12:50
#13
ok, min fejl. men du havde også lagt en lille fejl ind (du glemte at rette den sidste $text til $ext, jeg har rettet begge forneden. list(,,$ext) = getimageeize($filename); $tmp = array("","gif","jpg","png"); $ext = $tmp[$ext];
17. juni 2006 - 13:11
#14
nu får jeg denne fejl : Call to undefined function getimageeize()
17. juni 2006 - 13:17
#15
great! getimagesize() hedder funktionen. list(,,$ext) = getimageeize($filename); -> list(,,$ext) = getimagesize($filename);
17. juni 2006 - 13:51
#16
Den resize ikke billedet mærkeligt, det virker lidt som om at det eneste billede den ikke vil resize er det billede jeg har taget på min mobil telefon??? men det kan jo hellere ikke passe.
18. juni 2006 - 11:31
#17
Jeg fandt denne stump kode på nettet, når den er sat ind virker det :) error_reporting(E_ALL); // 0 is the current behavior ini_set('gd.jpeg_ignore_warning', 1); $im = imagecreatefromjpeg($file); Så scriptet kom til at se sådan her ud: <?php function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = NULL; // $ext = strtolower(end(explode($filename))); list(,,$ext) = getimagesize($filename); $tmp = array("","gif","jpg","png"); $ext = $tmp[$ext]; error_reporting(E_ALL); // 0 is the current behavior ini_set('gd.jpeg_ignore_warning', 1); $im = imagecreatefromjpeg($file); switch($ext) { case 'jpg': case 'jpeg': $srcim = imagecreatefromjpeg( $filename ); error_reporting(E_ALL); // 0 is the current behavior ini_set('gd.jpeg_ignore_warning', 1); $im = imagecreatefromjpeg($file); break; case 'gif': $srcim = imagecreatefromgif( $filename); break; case 'png': $srcim = imagecreatefrompng( $filename); break; default: //Her er opstået en fejl... } $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $wscale = $maxw / $ow; $hscale = $maxh / $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 ); switch($ext) { case 'jpg': case 'jpeg': $result = imagejpeg( $dstim, $newfilename, 60 ); break; case 'gif': $result = imagegif( $dstim, $newfilename ); break; case 'png': $result = imagepng( $dstim, $newfilename ); break; default: //Her er opstået en fejl... } imagedestroy( $dstim ); imagedestroy( $srcim ); return file_exists($newfilename); } resize("Billede013.jpg", "Billede013.jpg", 100,100); ?> Mange tak for jeres hjælp både jakobdo og viper_killerguy. Læg et svar begge så for i 15 point hver :)
18. juni 2006 - 20:09
#18
Svar.
Vi tilbyder markedets bedste kurser inden for webudvikling