Como leí en varios post el problema es con la memoria que esta función reserva para la imágen Ver post
Por alguna razón puse ini_set('memory_limit','50M'); en local y funcionó pero en el remoto no pasa nada
------------------------
Para hacer unas pruebas utilize un script de los comentarios de php.net
Código PHP:
<?php
header('Content-Type: text/plain');
ini_set('memory_limit', '50M');
function format_size($size) {
if ($size < 1024) {
return $size . ' bytes';
}
else {
$size = round($size / 1024, 2);
$suffix = 'KB';
if ($size >= 1024) {
$size = round($size / 1024, 2);
$suffix = 'MB';
}
return $size . ' ' . $suffix;
}
}
$start_mem = memory_get_usage();
echo <<<INTRO
The memory required to load an image using imagecreatefromjpeg() is a function
of the image's dimensions and the images's bit depth, multipled by an overhead.
It can calculated from this formula:
Num bytes = Width * Height * Bytes per pixel * Overhead fudge factor
Where Bytes per pixel = Bit depth/8, or Bits per channel * Num channels / 8.
This script calculates the Overhead fudge factor by loading images of
various sizes.
INTRO;
echo "\n\n";
echo 'Limit: ' . ini_get('memory_limit') . "\n";
echo 'Usage before: ' . format_size($start_mem) . "\n";
// Place the images to load in the following array:
$images = array('image1.jpg', 'image2.jpg', 'image3.jpg');
$ffs = array();
echo "\n";
foreach ($images as $image) {
$info = getimagesize($image);
printf('Loading image %s, size %s * %s, bpp %s... ',
$image, $info[0], $info[1], $info['bits']);
$im = imagecreatefromjpeg($image);
$mem = memory_get_usage();
echo 'done' . "\n";
echo 'Memory usage: ' . format_size($mem) . "\n";
echo 'Difference: ' . format_size($mem - $start_mem) . "\n";
$ff = (($mem - $start_mem) /
($info[0] * $info[1] * ($info['bits'] / 8) * $info['channels']));
$ffs[] = $ff;
echo 'Difference / (Width * Height * Bytes per pixel): ' . $ff . "\n";
imagedestroy($im);
$start_mem = memory_get_usage();
echo 'Destroyed. Memory usage: ' . format_size($start_mem) . "\n";
echo "\n";
}
echo 'Mean fudge factor: ' . (array_sum($ffs) / count($ffs));
Cita:
El error que muestra lo hace la funcion imagecreatefromjpeg a pesar que se esta aumentando el memory_limit a 50M (puedo aumentarlo a 400M y el error no cambia)The memory required to load an image using imagecreatefromjpeg() is a function
of the image's dimensions and the images's bit depth, multipled by an overhead.
It can calculated from this formula:
Num bytes = Width * Height * Bytes per pixel * Overhead fudge factor
Where Bytes per pixel = Bit depth/8, or Bits per channel * Num channels / 8.
This script calculates the Overhead fudge factor by loading images of
various sizes.
Limit: 40M
Usage before: 60.98 KB
Loading image image1.jpg, size 1280 * 1024, bpp 8... done
Memory usage: 6.34 MB
Difference: 6.28 MB
Difference / (Width * Height * Bytes per pixel): 1.6753702799479
Destroyed. Memory usage: 63.5 KB
Loading image image2.jpg, size 2171 * 3389, bpp 8... <br />
<b>Fatal error</b>: Out of memory (allocated 33292288) (tried to allocate 2171 bytes) in <b>/homepages/39/d246724706/htdocs/GUSTAVO/proyectox/memory_limit.php</b> on line <b>49</b><br />
of the image's dimensions and the images's bit depth, multipled by an overhead.
It can calculated from this formula:
Num bytes = Width * Height * Bytes per pixel * Overhead fudge factor
Where Bytes per pixel = Bit depth/8, or Bits per channel * Num channels / 8.
This script calculates the Overhead fudge factor by loading images of
various sizes.
Limit: 40M
Usage before: 60.98 KB
Loading image image1.jpg, size 1280 * 1024, bpp 8... done
Memory usage: 6.34 MB
Difference: 6.28 MB
Difference / (Width * Height * Bytes per pixel): 1.6753702799479
Destroyed. Memory usage: 63.5 KB
Loading image image2.jpg, size 2171 * 3389, bpp 8... <br />
<b>Fatal error</b>: Out of memory (allocated 33292288) (tried to allocate 2171 bytes) in <b>/homepages/39/d246724706/htdocs/GUSTAVO/proyectox/memory_limit.php</b> on line <b>49</b><br />
Es posible que no este cambiando realmente el limite ?