PDA

View Full Version : [php] caricamento immagini


TorpedoBlu
04-01-2007, 21:41
uso queste funzioni per creare l'immagine e la sua miniatura per i preview



<?
error_reporting(2047);

/*--------------------------------------------------*/
/*FUNZIONI PER IL CARICAMENTO DI IMMAGINI SUL SERVER*/
/*--------------------------------------------------*/





/*absolutepath è la cartella dove caricare il file (esempio ./img), $file è lavariabile proveniente dalla form e $filename il nome del file sul server*/
function caricaImmagine($absolute_path, $file, $nome_file){
$dir = "dir";
$file_name=$nome_file.".jpg";
if ($file != "")
{
if (file_exists("$absolute_path/$file_name"))
{
die("errore2: Un file con lo stesso nome è già online, RINOMINARLO e inviarlo nuovamente");
}

copy($file, "".$absolute_path."/".$file_name.""); /*or die("errore4: Problemi sul server... riprova più tardi o scrivici una email");
return 1;*/
}
else
{
//die("errore5: Non hai selezionanto nessun file!!!");
return 0;
}
}


/*stesse caratteristiche di caricaImmagine, ma la variabile dimensione definisce il massimo consentito in X e Y*/
function caricaImmagineModificata($absolute_path, $file, $nome_file, $dimensione){
$dir = "dir";
$file_name=$nome_file.".jpg";
if ($file != "")
{
if (file_exists("$absolute_path/$file_name"))
{
die("errore2: Un file con lo stesso nome è già online, RINOMINARLO e inviarlo nuovamente");
}

//crea la miniatura

$wsize = $dimensione; //larghezza massima e...
$hsize = $dimensione;; //altezza massima della thumbnail
$im_size = GetImageSize($file);
$imageWidth = $im_size[0];
$imageHeight = $im_size[1];
$thumb_width = $wsize;
$thumb_height = $hsize;
$im2 = imagecreatefromjpeg($file);

if ($imageWidth>=$imageHeight)
{
$width = $thumb_width;
$height = ($width/$imageWidth)*$imageHeight;
}
else
{
$height = $thumb_height;
$width = ($height/$imageHeight)*$imageWidth;
}

$im = imageCreateTrueColor($width, $height);

if (function_exists('ImageCopyResampled')) {
ImageCopyResampled($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
} else {
ImageCopyResized($im,$im2, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
}
$nome_file_output=$absolute_path."/".$nome_file.".jpg";
/* Header("Content-type: image/jpg"); */
Imagejpeg($im, $nome_file_output, 85); //85 è la qualità (da 1 a 100)
ImageDestroy($im);
ImageDestroy($im2);
return 1;

}

else
{
//die("errore5: Non hai selezionanto nessun file!!!");
return 0;
}
}


?>


ma dopo il trasferimento di dominio mi da questo errore:

Fatal error: Allowed memory size of 12582912 bytes exhausted (tried to
allocate 8192 bytes)
in /web/htdocs/www.athenaband.com/home/immagini.php on line 54


come mai?

Pro7on
05-01-2007, 08:22
ma hai abbastanza spazio per mettere un img ?

TorpedoBlu
05-01-2007, 11:00
ma hai abbastanza spazio per mettere un img ?

beh chiaro.. non vorrei che ilproblema fosse che non sono attive le librerie indicate per le immagini.. come si chiamano? le GD mi sembra?

no cacchio sono attive anche nel nuovo provider..
http://www.athenaband.com/info.php

cosa può essere?

vizzz
05-01-2007, 11:20
la riga incriminata è questa "$im2 = imagecreatefromjpeg($file);" ?
quanto è grossa l'immagine?
a me puzza di problema di mancanza di memoria ram per l'operazione...non conosco bene le gd ma portebbe essere una limitazione di sicurezza

edit. mi sono documentato un po
pare che sul server che stai usando il limite massimo di allocamento memoria per script è di 12MB, e sfori di 8k
prova ad aumentare la memoria con il comando
ini_set("memory_limit","13M");
e vedi se va

vizzz
05-01-2007, 11:24
in effetti dal phpinfo(); si legge:
memory_limit 12M

TorpedoBlu
05-01-2007, 12:06
ok, ho provato a diminuire la dimensione delle immagini e me le uppa..

come si fa ad aumentare la dimensione consentita???

TorpedoBlu
05-01-2007, 12:08
la riga incriminata è questa "$im2 = imagecreatefromjpeg($file);" ?
quanto è grossa l'immagine?
a me puzza di problema di mancanza di memoria ram per l'operazione...non conosco bene le gd ma portebbe essere una limitazione di sicurezza

edit. mi sono documentato un po
pare che sul server che stai usando il limite massimo di allocamento memoria per script è di 12MB, e sfori di 8k
prova ad aumentare la memoria con il comando
ini_set("memory_limit","13M");
e vedi se va

scusa non ho fatto in tempo a leggere.. cmq le immagini che uppo sono da 500k, può essere che il processo usti 12MB? le ho portate a 80k e ha funzionato, ma non capisco...

ora provo a usare il comando che mi hai suggerito

TorpedoBlu
05-01-2007, 12:10
nada...ho ptovato con:
ini_set("memory_limit","15M");

ma mi risponde

Fatal error: Allowed memory size of 15728640 bytes exhausted (tried
to allocate 8192 bytes)
in /web/htdocs/www.athenaband.com/home/immagini.php on line 57


ho dovuto aumentare fino a 25MB! e ora va!