24. september 2006 - 17:23
Der er
1 kommentar
script til at resize et billedes størrelse
kan nogle hjælpe mig med et script som henter alle givne filendelser(.jpg, .jpeg og .gif) fra en mappe og herefter resize alle billederne så størrelsen passer, men at bredden bliver til det jeg har angivet i mit script (højden skal selv tilpasses, så billedet ikke ser helt akavet ud)
24. september 2006 - 19:23
#1
Prøv:
function resize( $filename, $newfilename, $maxw, $maxh )
{
if ( $inf = getimagesize( $filename ) )
{
switch ( $inf[2] )
{
case 1:
$create = "imagecreatefromgif";
$save = "imagegif";
break;
case 1:
$create = "imagecreatefromjpeg";
$save = "imagejpeg";
break;
default:
die( 'Unsupported file type' );
}
}
else
{
die( "No image?" );
}
$srcim = $create( $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 );
$save( $dstim, $newfilename );
imagedestroy( $dstim );
imagedestroy( $srcim );
}
$files = glob( "folder/*.{jpg,jpeg,gif}", GLOB_NOSORT | GLOB_BRACE );
foreach ( $files as $file )
{
resize( $file, $file, 150, 150 );
}
Den resizer alle filer til max 150x100000 (altå max 150 bred) og bibeholder proportionerne - Den OVERSKRIVER de eksisterende filer! Hvis du vil gemme i en anden folder kan du lave:
resize( $file, $file, 150, 100000 );
om til:
resize( $file, "nyfolder/" . basename( $file ), 150, 100000 );