Foros del Web » Programando para Internet » PHP »

Imagenes en negro

Estas en el tema de Imagenes en negro en el foro de PHP en Foros del Web. Buenas, vengo con otro problemilla. He montado un codigo para subir imagenes al servidor y que les ajuste el tamaño hasta un maximo. Código PHP: ...
  #1 (permalink)  
Antiguo 13/08/2010, 03:30
 
Fecha de Ingreso: agosto-2010
Mensajes: 14
Antigüedad: 13 años, 8 meses
Puntos: 1
Imagenes en negro

Buenas, vengo con otro problemilla.

He montado un codigo para subir imagenes al servidor y que les ajuste el tamaño hasta un maximo.

Código PHP:
$consulta "INSERT INTO aires (nombre_aire, idmarca, precio, oferta, descripcion) values ('$nombre_aire','$idmarca','$precio', '$oferta','$descripcion')";
mysql_query($consulta,$db) or die ("Error: ".mysql_error()); 

$dir='images/aires';
$thumbdir$dir '/thumbs';
list (
$width$height$type$attr) = getimagesize ($_FILES['subeimagen'] ['tmp_name']);
$error'The file you uploaded was not a supported filetype.';
switch (
$type) {
case 
IMAGETYPE_GIF:
    
$image=imagecreatefromgif($_FILES['subeimagen'] ['tmp_name']) or die ($error);
    break;
case 
IMAGETYPE_JPEG:
    
$image=imagecreatefromjpeg($_FILES['subeimagen'] ['tmp_name']) or die ($error);
    break;
case 
IMAGETYPE_PNG:
    
$image=imagecreatefrompng($_FILES['subeimagen'] ['tmp_name']) or die ($error);
    break;
default:
    die(
$error);
}
$last_id mysql_insert_id();
$imagename $last_id;

$query "UPDATE aires SET image_filename = ('$imagename') WHERE id_aire = ('$last_id')";
$result mysql_query($query$db) or die (mysql_error($db));
// Establecer un ancho y alto máximo
$image_width 200;
$image_height 200;

// Obtener las nuevas dimensiones
$ratio_orig $width/$height;

if (
$image_width/$image_height $ratio_orig) {
   
$image_width $image_height*$ratio_orig;
} else {
   
$image_height $image_width/$ratio_orig;
}
// Redimensionar
$image imagecreatetruecolor($image_width$image_height);
imagecopyresampled($image$image0000$image_width$image_height$width$height);
//guarda la imagen
imagejpeg($image$dir '/' $imagename '.jpg');


//crea una copia al 50% y la guarda en la carpeta thumbs
$thumb_width $image_width 0.50;
$thumb_height $image_height 0.50;
$thumb imagecreatetruecolor ($thumb_width$thumb_height);
imagecopyresampled ($thumb$image0000$thumb_width$thumb_height$image_width$image_height);
imagejpeg ($thumb$thumbdir '/' $imagename '.jpg');
imagedestroy($thumb);
?> 
Lo hace todo correctamente, subo una imagen de cualquier tamaño y la ajusta hasta un maximo de 200x200, la guarda en su carpeta y luego en la carpeta thumbs me guarda otra copia al 50%.

El problema es que las imagenes que me guarda estan totalmente en NEGRO, no hay nada....
Eso si el tamaño y el formato estan bien.

Se que el fallo esta en esta parte de codigo:

Código PHP:
// Establecer un ancho y alto máximo
$image_width 200;
$image_height 200;

// Obtener las nuevas dimensiones
$ratio_orig $width/$height;

if (
$image_width/$image_height $ratio_orig) {
   
$image_width $image_height*$ratio_orig;
} else {
   
$image_height $image_width/$ratio_orig;
}
// Redimensionar
$image imagecreatetruecolor($image_width$image_height);
imagecopyresampled($image$image0000$image_width$image_height$width$height); 
Ya que sin eso funciona perfecto pero sin cambiar el tamaño.
Pero no se que es lo que esta mal.
  #2 (permalink)  
Antiguo 13/08/2010, 04:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Imagenes en negro

pero si estas creando una imagen en blanco....

Código PHP:
$image imagecreatetruecolor($image_width$image_height); 
y luego usas dicha nueva imagen en:
Código PHP:
imagecopyresampled($image$image0000$image_width$image_height$width$height); 
cosa que debes comprender esta mal... debes crear una nueva imagen es cierto, pero al menos cambia el nombre de la variable... ¡no uses el mismo!!

ya que lo único que consigues actualmente es copiar la imagen nueva -en blanco- sobre si misma... ¿y así que caso tiene?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/08/2010, 04:43
 
Fecha de Ingreso: agosto-2010
Mensajes: 14
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Imagenes en negro

Ok, gracias
He hecho algunos cambios y ahora va:

Código PHP:
// Redimensionar
$image_resized imagecreatetruecolor($image_width$image_height);
imagecopyresampled($image_resized$image0000$image_width$image_height$width$height);
//guarda la imagen
imagejpeg($image_resized$dir '/' $imagename '.jpg'); 

Etiquetas: imagenes, negro
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 11:45.