Kod
<?
header("Content-type: image/png");
$img = $_GET['img'];
// Wywalamy mozliwosc referencji poza katalogiem galerie
$img = str_replace( ".." , "" , $img );
$ext = substr ( $img , strpos( $img , "." ) + 1 );
switch ( $ext )
{
case 'gif':
$im = imagecreatefromgif($img);
break;
case 'jpg':
$im = imagecreatefromjpeg($img);
break;
case 'png':
$im = imagecreatefrompng($img);
break;
case 'bmp':
$im = imagecreatefromwbmp($img);
break;
}
$sx = imagesx ( $im );
$sy = imagesy ( $im );
if ( $_GET['size'] == 1 && ($sx > 300 || $sy > 300) )
{
$y = (300 * $sy) / $sx;
$out = imagecreatetruecolor( 300 , $y );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 300 , $y , $sx , $sy );
}
elseif ( $_GET['size'] == 2 )
{
$out = imagecreatetruecolor( 230 , 172 );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 230 , 172 , $sx , $sy );
}
elseif($_GET['size'] == 3)
{
$out = imagecreatetruecolor( 200 , 150 );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 200 , 150 , $sx , $sy );
}
elseif($sx > 80 || $y > 60)
{
$out = imagecreatetruecolor( 80 , 60 );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 80 , 60 , $sx , $sy );
}
else
{
$out = $im;
}
imagepng($out);
imagedestroy($im);
imagedestroy($out);
?>
header("Content-type: image/png");
$img = $_GET['img'];
// Wywalamy mozliwosc referencji poza katalogiem galerie
$img = str_replace( ".." , "" , $img );
$ext = substr ( $img , strpos( $img , "." ) + 1 );
switch ( $ext )
{
case 'gif':
$im = imagecreatefromgif($img);
break;
case 'jpg':
$im = imagecreatefromjpeg($img);
break;
case 'png':
$im = imagecreatefrompng($img);
break;
case 'bmp':
$im = imagecreatefromwbmp($img);
break;
}
$sx = imagesx ( $im );
$sy = imagesy ( $im );
if ( $_GET['size'] == 1 && ($sx > 300 || $sy > 300) )
{
$y = (300 * $sy) / $sx;
$out = imagecreatetruecolor( 300 , $y );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 300 , $y , $sx , $sy );
}
elseif ( $_GET['size'] == 2 )
{
$out = imagecreatetruecolor( 230 , 172 );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 230 , 172 , $sx , $sy );
}
elseif($_GET['size'] == 3)
{
$out = imagecreatetruecolor( 200 , 150 );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 200 , 150 , $sx , $sy );
}
elseif($sx > 80 || $y > 60)
{
$out = imagecreatetruecolor( 80 , 60 );
imagecopyresampled( $out , $im , 0 , 0 ,0 , 0 , 80 , 60 , $sx , $sy );
}
else
{
$out = $im;
}
imagepng($out);
imagedestroy($im);
imagedestroy($out);
?>
Mianowicie miniaturki z jpg i gif tworzy bardzo ładnie, ale nie radzi sobie z png i bmp (zamiast miniaturki jest czarny obrazek). Nie wiem za bardzo dlaczego.
Poza tym nie tworzy miniaturek z obrazków nazywanych np. obrazek.costam.jpg, a więc z dwoma kropkami, co wynika ze specyfiki funkcji strpos. Można jakoś inaczej to rozwiązać?