Miniature Photo Gallery [closed]

0

I have the code below, where it connects to the database, takes the name of the image and saves it in an Array:

while($row = $stm->fetch())  {

echo "<img  src=thumb.php?img=".$row['foto']."/>";

}

The file thumb.php, which does all the processing of the image to leave in gallery:

    $filename = $_GET['img'];
$percent = 0.10;

// Cabeçalho que ira definir a saida da pagina
header('Content-type: image/jpeg');

// pegando as dimensoes reais da imagem, largura e altura
list($width, $height) = getimagesize($filename);

//setando a largura da miniatura
$new_width = 120;
//setando a altura da miniatura
$new_height = 100;

//gerando a a miniatura da imagem
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

//o 3º argumento é a qualidade da imagem de 0 a 100
imagejpeg($image_p, null, 50);
imagedestroy($image_p);

The images are in the same directory where the index.php that connects in the bank and shows the gallery and the file thumb.php.

The problem that does not display the photo and does not generate any error. Behind the photo comments that are in the bank, but not the image.

    
asked by anonymous 30.08.2017 / 22:03

1 answer

0

The imagecreatefromjpeg function only reads documents of type JPEG:

$image = imagecreatefromjpeg($filename);

Files in PNG format will cause a crash because it expects a JPEG image.

You can use getimagesize to detect the type of image, but it is not as reliable as fileinfo , then based on this other answer link adjust your code like this:

function mimeType($file)
{
    $mimetype = false;

    if (class_exists('finfo')) {//PHP5.4+
        $finfo     = finfo_open(FILEINFO_MIME_TYPE);
        $mimetype  = finfo_file($finfo, $file);
        finfo_close($finfo);
    } else if (function_exists('mime_content_type')) {//php5.3 ou inferiror
        $mimetype = mime_content_type($file);
    }

    return $mimetype;
}

$filename = $_GET['img'];
$percent = 0.10;

//Lê o formato do conteudo da imagem
$mime = mimeType($filename);

if (strpos($mime, 'image/') !== 0) {
    die('Este arquivo não é uma imagem');
}

//Remove o prefixo image/
$mime = substr($mime, 6);

//Remove 'x' de x-jpeg, talvez ocorram em alguns servidores antigos
$mime = str_replace('x-', '', $mime);

switch ($mime) {
    case 'jpeg':
        $image = imagecreatefromjpeg($filename);
    break;
    case 'png':
        $image = imagecreatefrompng($filename);
    break;
    case 'gif':
        $image = imagecreatefromgif($filename);
    break;
    default:
        die('Formato não aceito');
}

// Cabeçalho que ira definir a saida da pagina
header('Content-type: image/jpeg');

// pegando as dimensoes reais da imagem, largura e altura
list($width, $height) = getimagesize($filename);

//setando a largura da miniatura
$new_width = 120;
//setando a altura da miniatura
$new_height = 100;

//gerando a a miniatura da imagem
$image_p = imagecreatetruecolor($new_width, $new_height);

imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

//o 3º argumento é a qualidade da imagem de 0 a 100
imagejpeg($image_p, null, 50);
imagedestroy($image_p);
    
30.08.2017 / 23:37