Hola amigos...tengo un raro problema. Uso la siguiente aplicacion para subir mis imágenes al servidor y luego redimensionarlas. He modificado el tamaño máximo que puedo subir al servidor (ya que es de pago) con un .httaccess de la siguiente manera:
Código:
php_value upload_max_filesize 67107840
php_value post_max_size 67107840
Las imágenes las subo con un formulario normal vía POST y las proceso de la siguiente forma:
Código PHP:
//subimos la imagen_quienes
if ($_POST["nofoto_imagen_quienes"]=="si"){
echo "<center>Sin imagen para página presentación.</center><br>";
}else{
if (is_uploaded_file($_FILES['imagen_quienes']['tmp_name'])) {
//revisamos que sea jpg
if ($_FILES['imagen_quienes']['type'] == "image/gif"||$_FILES['imagen_quienes']['type'] == "image/pjpeg"||$_FILES['imagen_quienes']['type'] == "image/jpeg"){
//nuevo nombre para la imagen
if ($_FILES['imagen_quienes']['type'] == "image/gif"){
$nuevoNombre_quienes = $_POST['foto_cambio_imagen_quienes'].".gif";
}
if ($_FILES['imagen_quienes']['type'] == "image/pjpeg"||$_FILES['imagen_quienes']['type'] == "image/jpeg"){
$nuevoNombre_quienes = $_POST['foto_cambio_imagen_quienes'].".jpg";
}
//movemos la imagen
move_uploaded_file($_FILES['imagen_quienes']['tmp_name'], "../../../espacioweb/web".$_POST['maqueta']."/Img/$nuevoNombre_quienes");
chmod( "../../../espacioweb/web".$_POST['maqueta']."/Img/$nuevoNombre_quienes", 0777 ); // octal; valor correcto de mode
//obtenemos la inforamción
$data = GetImageSize("../../../espacioweb/web".$_POST['maqueta']."/Img/$nuevoNombre_quienes");
//mensaje de éxito
echo "<center>Imagen para página presentación subida con éxito.</center><br>";
if ($_FILES['imagen_quienes']['type'] == "image/pjpeg"||$_FILES['imagen_quienes']['type'] == "image/jpeg"){
include ("../../../includes/redimensionar_imagen_quienes.php");
}
if ($_FILES['imagen_quienes']['type'] == "image/gif"){
include ("../../../includes/redimensionar_imagen_quienes_gif.php");
}
}else{
echo "<center>Formato no válido para fichero de imagen para página presentación.</center><br>";
}
//borrar fotos cambiadas
if ($_POST['actual_imagen_quienes']!="" && $_POST['actual_imagen_quienes']!="fotografia_vacia.jpg"){
unlink("../../../espacioweb/web".$_POST['maqueta']."/Img/".$_POST['actual_imagen_quienes']."");
}
}else {
echo "<center>No insertada imagen para página presentación.</center><br>";
}
}
De esta manera subo las imágenes al servidor y las redimensiono al mismo tiempo. De hecho hasta aqui funciona perfectamente pero el archivo que redimensiona sólo lo hace con imágenes hasta 300K. No lo entiendo.Que yo sepa no hay límite para redimensionar imagenes con la libreria GD. Este es el codigo que redimensiona:
Código PHP:
<?
//imagen original que subo al seridor y nombre de la imagen tras ser redimensionada.
$imagen_original = "1148408196-Q.jpg";
$imagen_nueva = "1148408196-Q-R.jpg";
//tamaño al que voy a redimensionarla
$imagen_nuevaWidth = 280;
$imagen_nuevaHeight = 300;
$imagetype = array (1 => 'GIF', 2 => 'JPG', 3 => 'PNG');
$imginfo = getimagesize($imagen_original);
if ($imginfo == null) {
$error = "ERROR: La imagen original no se encontro!";
return false;
}
$imginfo[2] = $imagetype[$imginfo[2]];
// ancho/alto de la imagen original
$srcWidth = $imginfo[0];
$srcHeight = $imginfo[1];
// Verifica que existan las funciones GD2
if (!function_exists('imagecreatefromjpeg')) {
$error = "la libreria de GD2 de imagenes no esta instalada!";
return false;
}
if (!function_exists('imagecreatetruecolor')) {
$error = "No existe la funcion imagecreatetruecolor de la libreria GD2 de imagenes!";
return false;
}
if ($imginfo[2] == 'JPG')
$src_img = imagecreatefromjpeg($imagen_original);
else
$src_img = imagecreatefrompng($imagen_original);
if (!$src_img) {
$error = "imagen no válida!";
return false;
}
//Mantengo las proporciones para que la imagen no se deforme
// determina el tamaño de la imagen
$imx = @ImageSX($src_img);
$imy = @ImageSY($src_img);
//determina proporcion en unidades
$x = $imx/$imagen_nuevaWidth;
$y = $imy/$imagen_nuevaHeight;
// calcula la escala
if($x>$y) $scale = $imagen_nuevaWidth/$imx;
if($x<$y) $scale = $imagen_nuevaHeight/$imy;
if($x==$y) $scale = $imagen_nuevaHeight/$imy;
//Escala la imagen
$x = intval($imx*$scale);
$y = intval($imy*$scale);
$dst_img = imagecreatetruecolor($x, $y);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $x, $y, $imx, $imy);
imagejpeg($dst_img, $imagen_nueva, "90");//Ojo: el 80 es la calidad de la imagen
imageimagen_nuevaroy($src_img);
imageimagen_nuevaroy($dst_img);
// Se cambian los permisos del archivo
chmod($imagen_nueva, octdec('777'));
// Se verifica que la imagen es valida
$imginfo = getimagesize($imagen_nueva);
if ($imginfo == null) {
return false;
} else {
return true;
}
unlink($imagen_original);
?>
Por favor, espero que alguien pueda ayudarme porque necesito poder redimesionar imágenes hasta 5 megas. Por cierto, tengo libreria GD (v. 2.0.28). Gracias....