Foros del Web » Programando para Internet » PHP »

Ayuda para Redimensionar y Recortar imágenes

Estas en el tema de Ayuda para Redimensionar y Recortar imágenes en el foro de PHP en Foros del Web. Hola, qué tal? Estoy haciendo un pequeño sistema en el que el usuario puede agregar sus servicios a su página web, y a cada uno ...
  #1 (permalink)  
Antiguo 22/03/2010, 09:11
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años
Puntos: 2
Pregunta Ayuda para Redimensionar y Recortar imágenes

Hola, qué tal?

Estoy haciendo un pequeño sistema en el que el usuario puede agregar sus servicios a su página web, y a cada uno le puede asignar una imagen.

Lo que necesito hacer, es que al subir las imágenes éstas se redimensionen 2 veces (miniatura y foto grande) a cierto ancho, pero que a su vez se recorte una porción de imágen del centro con un alto determinado.

Dejo unos gráficos para ver si se me entiende mejor.

La imagen es grande, asi que les dejo el link:
http://estudiopronet.com/clientes/gr...ento_fotos.jpg

Actualmente tengo un código que me sirve para redimensionar imágenes, pero con respecto al alto, y no al ancho.. y no le puedo encontrar la vuelta para que funcione como quiero. Además no puedo recortarlas al medio. Les dejo el código que tengo:

Código PHP:
<?php

if(isset($_POST['guardar'])){
    
$nombre $_POST['nombre'];
    
$descripcion $_POST['descripcion'];
    
$texto addslashes($_POST['texto']);
    
$tmpName $_FILES['imagen']['tmp_name'];
    
$fileType $_FILES['imagen']['type'];
    
$fileSize $_FILES['imagen']['size'];
    
    
# Ancho del thumbnail en pixeles
    
define("ANCHO_THUMB"370);
    
    
# Altura del thumbnail en píxeles
    
define("ALTURA_THUMB"150);
    
    
# Ancho de la foto en píxeles
    
define("ANCHO_FOTO"780);
    
    
# Altura de la foto en píxeles
    
define("ALTURA_FOTO"250);
    
    
# Nombre temporal de las thumbnails
    
define("TEMP_THUMB""thumb");
    
    
# Nombre temporal de las fotos
    
define("TEMP_FOTO""foto");
    
    
// Mime types permitidos
    
$mimetypes = array("image/jpeg""image/pjpeg""image/gif""image/png");
    
    
//Guardo las fotos y las thumbnails en la BD

    // Verificamos si el archivo es una imagen válida
    
if(!in_array($fileType$mimetypes)){
        
$message "El archivo que subiste no es una imagen válida";
        return 
$message;
    }
    
    switch(
$fileType){
        case 
$mimetypes[0]:
        case 
$mimetypes[1]:
            
$img imagecreatefromjpeg($tmpName);
            break;
        case 
$mimetypes[2]:
            
$img imagecreatefromgif($tmpName);
            break;
        case 
$mimetypes[3]:
            
$img imagecreatefrompng($tmpName);
            break;
    }

    
// Tomo los datos de ancho y alto de la foto para redimensionarla
    
$datos getimagesize($tmpName);
    
    
// Redimensionar el thumb
    
$ratio = ($datos[1]/ALTURA_THUMB);
    
$ancho round($datos[0]/$ratio);
    
$thumb imagecreatetruecolor($anchoALTURA_THUMB);
    
imagecopyresized($thumb$img0000$anchoALTURA_THUMB$datos[0], $datos[1]);    
    
    switch(
$fileType) {
        case 
$mimetypes[0]:
        case 
$mimetypes[1]:
            
imagejpeg($thumbTEMP_THUMB);
            break;
        case 
$mimetypes[2]:
            
imagegif($thumbTEMP_THUMB);
            break;
        case 
$mimetypes[3]:
            
imagepng($thumbTEMP_THUMB);
            break;
    }
            
    
// Redimensionar la foto
    
$ratioFoto = ($datos[1]/ALTURA_FOTO);
    
$anchoFoto round($datos[0]/$ratioFoto);
    
$foto imagecreatetruecolor($anchoFotoALTURA_FOTO);
    
imagecopyresized($foto$img0000$anchoFotoALTURA_FOTO$datos[0], $datos[1]);

    switch(
$fileType) {
        case 
$mimetypes[0]:
        case 
$mimetypes[1]:
            
imagejpeg($fotoTEMP_FOTO);
            break;
        case 
$mimetypes[2]:
            
imagegif($fotoTEMP_FOTO);
            break;
        case 
$mimetypes[3]:
            
imagepng($fotoTEMP_FOTO);
            break;
    }
            
    
// Extrae los contenidos de las fotos
    # contenido de la foto original
    
$fp fopen(TEMP_FOTO"rb");
    
$tfoto fread($fpfilesize(TEMP_FOTO));
    
$tfoto addslashes($tfoto);
    
fclose($fp);
    
    
# contenido del thumbnail
    
$fp fopen(TEMP_THUMB"rb");
    
$tthumb fread($fpfilesize(TEMP_THUMB));
    
$tthumb addslashes($tthumb);
    
fclose($fp);
    
    
// Borra archivos temporales si es que existen
    
@unlink($tmpName);
    @
unlink(TEMP_THUMB);
    @
unlink(TEMP_FOTO);
    
    include(
'incluir/config.php');
    
    
$cons mysql_query("INSERT INTO servicios (nombre, descripcion, texto, thumb, foto, type) VALUES ('$nombre', '$descripcion', '$texto', '$tthumb', '$tfoto', '$fileType');"$link) or die('Error MySQL: '.mysql_error($link));
    
    if(!
$cons){
        
$message 'Ha ocurrido un error guardando las imagenes. Revise las configuraciones o contacte al administrador.';
        die (
$message);
    } else {
        
$message 'Fotos guardadas con éxito en la base de datos';
        die (
$message);
    }
}

?>

Espero que alguien entienda lo que necesito y me pueda dar una manito.

Desde ya muchisimas gracias!!
__________________
Facundo
http://www.creactivo.com.ar
  #2 (permalink)  
Antiguo 22/03/2010, 09:16
Avatar de blekia  
Fecha de Ingreso: julio-2009
Mensajes: 204
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Ayuda para Redimensionar y Recortar imágenes

Para empezar yo utilizaría exif_imagetype() para saber el tipo de imagen.

más info sobre GD en http://us.php.net/manual/en/ref.image.php
__________________
Controla tu Página Web con cualquier navegador.
  #3 (permalink)  
Antiguo 22/03/2010, 09:31
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años
Puntos: 2
Respuesta: Ayuda para Redimensionar y Recortar imágenes

el tipo de imagen lo estoy viendo en

$fileType = $_FILES['imagen']['type'];

y lo valido en varias ocasiones con switch/case

De todas formas, no es eso lo que me importa en este momento, ya que no tengo ningún problema con el tipo de archivo. Todo eso funciona correctamente.

Lo que necesito es lo que expliqué anteriormente.
__________________
Facundo
http://www.creactivo.com.ar
  #4 (permalink)  
Antiguo 12/10/2010, 09:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Ayuda para Redimensionar y Recortar imágenes

Lo conseguistes solucionar? Como?

Etiquetas: fotos, imagenes, recortar, redimensionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:34.