Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt tworzenia miniaturek
Forum PHP.pl > Forum > Przedszkole
Orish
Z tym skryptem (nie moim) jest coś nie tak:

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);

?>


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ć?
erix
Cytat
obrazek.costam.jpg, a więc z dwoma kropkami, co wynika ze specyfiki funkcji strpos.

pathinfo" title="Zobacz w manualu PHP" target="_manual

  1. <?php
  2. // Wywalamy mozliwosc referencji poza katalogiem galerie
  3. $img = str_replace( ".." , "" , $img );
  4. ?>

Bezpieczniej basename" title="Zobacz w manualu PHP" target="_manual.

Cytat
ale nie radzi sobie z png i bmp (zamiast miniaturki jest czarny obrazek).

PHP nie posiada obsługi BMP. Poszukaj na forum, bo linkowałem do odpowiedniej klasy. Co do PNG - sprawdź, w phpinfo" title="Zobacz w manualu PHP" target="_manual, czy interpreter ma wkompilowaną obsługę tego formatu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.