Ho un problema:
nella cartella "miniature", cioè dove vanno caricate le miniature delle immagini, mi vengono caricate solo file con formato .jpeg/.jpg, tutti gli altri formati mi da: Impossibile aprire questo file.
Codice PHP:
<?php
function filtranome($nomefile)
{
// qui filtri con varie funzioni
$nuovonome = $nomefile;
$nuovonome = str_replace(array(" ", ".",","), $nuovonome); // elimino alcuni caratteri
$nuovonome = strtolower($nuovonome); // tutto in minuscolo
$nuovonome .= '_'.time().'.jpg';
return ($nuovonome);
};
// controllo che non ci siano stati errori nell'upload (codice = 0)
if ($_FILES['uploadfile']['error'] == 0)
{
// upload ok
// controllo che il file sia in formato gif
if (!(in_array($_FILES['uploadfile']['type'], array('image/jpeg','image/png','image/gif','image/jpg','image/bmp','image/PNG'))))
die("Formato file non valido");
// copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale
copy($_FILES['uploadfile']['tmp_name'], "file_caricati/".filtranome($_FILES['uploadfile']['name'])) or die("Impossibile caricare il file");
// upload terminato, stampo alcune info sul file
echo "[b]Upload terminato con successo[/b]
Le Informazioni riguardanti il File che hai appena caricato sono:
";
echo "Nome file: ".$_FILES['uploadfile']['name']."
";
echo "Dimensione file: ".$_FILES['uploadfile']['size']."
";
echo "Tipo MIME file: ".$_FILES['uploadfile']['type'];
}
else
{
// controllo il tipo di errore
if ($_FILES['uploadfile']['error'] == 2)
{
// errore, file troppo grande (> 1MB)
die("Errore, file troppo grande: il massimo consentito è 1MB");
}
else
{
// errore generico
die("Errore, impossibile caricare il file");
}
}
?>
<?php
$img = "file_caricati/".filtranome($_FILES['uploadfile']['name']); // percorso al file dell'immagine
$dest = "miniature/".filtranome($_FILES['uploadfile']['name']); // directory di salvataggio delle miniature create
// dimensioni della miniatura da creare
$thumbWidth = 60; // larghezza
$thumbHeight = 60; // altezza
// livello di compressione della miniatura
$thumbComp = 90;
// creazione dell'immagine della miniatura
$thumb = imagecreate($thumbWidth, $thumbHeight) or die("Impossibile creare la miniatura");
// apertura dell'immagine originale
$src = imagecreatefromjpeg($img) or die ("Impossibile aprire l'immagine originale");
// copio l'immagine originale in quella della miniatura ridimensionandola
imagecopyresized($thumb, $src, 0, 0, 0, 0, $thumbWidth, $thumbHeight, imageSx($src), imageSy($src)) or die("Impossibile ridimensionare l'immagine");
// salvataggio miniatura
imagejpeg($thumb, $dest, $thumbComp) or die("Impossibile salvare la miniatura");
?>
Consigli su come risolvere il problema?
Se puo essere utile ho trovato in un sito questo pezzo di codice:
Codice PHP:
if ($filetype == 'jpg') {
$srcImg = imagecreatefromjpeg("$imageDirectory/$imageName");
} else
if ($filetype == 'jpeg') {
$srcImg = imagecreatefromjpeg("$imageDirectory/$imageName");
} else
if ($filetype == 'png') {
$srcImg = imagecreatefrompng("$imageDirectory/$imageName");
} else
if ($filetype == 'gif') {
$srcImg = imagecreatefromgif("$imageDirectory/$imageName");
}
$origWidth = imagesx($srcImg);
$origHeight = imagesy($srcImg);
$ratio = $origWidth / $thumbWidth;
$thumbHeight = $origHeight / $ratio;
$thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $origWidth, $origHeight);
if ($filetype == 'jpg') {
imagejpeg($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'jpeg') {
imagejpeg($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'png') {
imagepng($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'gif') {
imagegif($thumbImg, "$thumbDirectory/$imageName");
}