30. august 2006 - 22:18
Der er
7 kommentarer og 1 løsning
Automatisk resize ved upload
Hejsa Er igang med flg. upload kode: <?php $hvorhen = 'fotos/".$_POST["select"]."'; $maxstr = 500000; if ( !empty( $_FILES['upfil'] ) && is_uploaded_file( $_FILES['upfil']['tmp_name'] ) ) { $target = $hvorhen . basename( $_FILES['upfil']['name'] ); $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$_FILES['upfil']['name']."')"); echo "<script language='Javascript'> alert ('Billedet er uploadet!') </script>"; echo "<script> location = 'admin_billeder.php' </script>"; if ( move_uploaded_file( $_FILES['upfil']['tmp_name'], $target ) ) { if ( filesize( $target ) > $maxstr ) { unlink( $target ); die( 'For stor! Max ' . $maxstr . ' bytes.' ); } $inf = getimagesize( $target ); if ( $inf[2] != 2 ) { unlink( $target ); die( 'Kun jpeg/jpg!' ); } } else { die( 'Kunne ikke flytte filen.' ); } } else { die( '' ); } ?> Det virker fint, men jeg vil gerne have den til at automatisk resize billedet man uploadet til eks. 600x450pixels. Både så de er klar til at blive vist på stedet samt at de ikke fylder så meget. - På forhånd tak
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?
30. august 2006 - 22:29
#1
Her: function resize( $filename, $newfilename, $maxw, $maxh ) { $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 ); imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); } Eksempel på brug: resize( "billede.jpg", "nytbillede.jpg", 64, 64 ); Webserveren skal naturligvis kunne skrive til den folder hvor det nye billede skal gemmes
30. august 2006 - 22:42
#2
kan jeg få det mikset sammen med min kode?
31. august 2006 - 00:49
#3
Prøv med: <?php $hvorhen = "fotos/".$_POST["select"]; $maxstr = 500000; function resize( $filename, $newfilename, $maxw, $maxh ) { $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 ); imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); } if ( !empty( $_FILES['upfil'] ) && is_uploaded_file( $_FILES['upfil']['tmp_name'] ) ) { $target = $hvorhen . basename( $_FILES['upfil']['name'] ); $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$_FILES['upfil']['name']."')"); echo "<script language='Javascript'> alert ('Billedet er uploadet!') </script>"; echo "<script> location = 'admin_billeder.php' </script>"; if ( move_uploaded_file( $_FILES['upfil']['tmp_name'], $target ) ) { if ( filesize( $target ) > $maxstr ) { unlink( $target ); die( 'For stor! Max ' . $maxstr . ' bytes.' ); } $inf = getimagesize( $target ); if ( $inf[2] != 2 ) { unlink( $target ); die( 'Kun jpeg/jpg!' ); } resize( $target, $target, 640, 480 ); } else { die( 'Kunne ikke flytte filen.' ); } } else { die( '' ); } ?>
31. august 2006 - 12:44
#4
det virker, til dels.. det er somom den beholder proporsitionerne. kan det passe? jeg har sat str. til 600x450, uploader et billede(der er større) og billedet på serveren får str. 600x434- dvs. vertikalt er det korrekt, men er den sat til ikke at "strække" i billedet?
31. august 2006 - 12:47
#5
Ja, den beholder proportionerne - Alt andet ser normalt komplet latterligt ud :) Du kan bare tilrette resize() funktionen hvis du ikke vil have det gjort pænt ;) Så kan du fjerne scale- og nw/nh variablene og bare bruge $maxw og $maxh Sådan: function resize( $filename, $newfilename, $maxw, $maxh ) { $srcim = imagecreatefromjpeg( $filename ); $ow = imagesx( $srcim ); $oh = imagesy( $srcim ); $dstim = imagecreatetruecolor( $maxw, $maxh ); imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $maxw, $maxh, $ow, $oh ); imagejpeg( $dstim, $newfilename, 85 ); imagedestroy( $dstim ); imagedestroy( $srcim ); }
31. august 2006 - 12:48
#6
Du får lige et svar :)
31. august 2006 - 13:25
#7
Jeg siger mange tak, og ja jeg burde måske lige overveje det med de proportioner :)
31. august 2006 - 13:28
#8
heheh ja billederne kommer nogle gange til at se lidt fjollede ud :-D
Vi tilbyder markedets bedste kurser inden for webudvikling