ciao a tutti!
come da titolo ho un problema con la memoria!
ricevo questo errore:
Allowed memory size of 12582912 bytes exhausted (tried to allocate 8192 bytes)
come devo fare per ovviare all'inconveniente?
lo ottengo quando devo creare l'anteprima di un'immagine salvata in un database!
ma non capisco come mai ricevo questo errore, visto che la stessa immagine su un altro sito [ ma sotto lo stesso server ] la vedo correttamente!
l'unica cosa diversa è il codice per fare il resize! ma il codice funziona, perché mi fa vedere tutte le immagini tranne alcune, e per quelle alcune ottengo l'warning di cui sopra.
vi riporto il codice che uso per il resize:
Codice PHP:
<?
ob_start();
require( "connect.inc.php" );
$blobId = $_GET['blobId'];
settype($blobId, integer);
$dbQuery = "SELECT `blobType`, `blobData` FROM `acquisti` WHERE `id_casa` = '".$blobId."'";
$result = mysql_query($dbQuery);
$fileType = @mysql_result($result, 0, "blobType");
$fileContent = @mysql_result($result, 0, "blobData");
header("Content-type: $fileType");
require( "resize.php" );
$img_res = imagecreatefromstring($fileContent);
$new_img_res = resize_image($img_res, 104, 90); # x y
unset($img_res);
print_image($new_img_res, 100);
unset($new_img_res);
?>
e questo invece è il file resize.php
Codice PHP:
<?
function resize_image($img_res, $maxX, $maxY) {
$actualX=imagesx($img_res);
$actualY=imagesy($img_res);
if ($actualY>$maxY){
$newY = $maxY;
$newX=($actualX/$actualY)*$newY;
if ($newX>$maxX) {$newX = $maxX; $newY = ($actualY/$actualX)*$newX;}
}elseif ($actualX>$maxX){
$newX = $maxX;
$newY = ($actualY/$actualX)*$newX;
if ($newY>$maxY) {$newY = $maxY; $newX=($actualX/$actualY)*$newY;}
}else{
$newX = $actualX;
$newY = $actualY;
}
$tmp_img_res = imagecreatetruecolor($newX, $newY);
$res = imagecopyresampled($tmp_img_res, $img_res, 0, 0, 0, 0, $newX, $newY, $actualX, $actualY);
return $tmp_img_res;
}
function save_image($img_res, $filename, $quality=100) {
imagejpeg($img_res, $filename, $quality);
}
function print_image($img_res, $quality=100) {
header('Content-Type: image/jpeg');
imagejpeg($img_res,NULL, $quality);
}
?>
in caso possano servire vi riporto anche le caratteristiche del sistema che uso:
Webserver Apache
PHP Version 4.3.10
Linux edge 2.4.29
GD Version 2.0.28
Grazie per le risposte!