Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/09/2005, 20:27
huayayo
 
Fecha de Ingreso: abril-2004
Mensajes: 56
Antigüedad: 20 años
Puntos: 0
Pregunta Problema con el color de fondo de una imagen

TENGO PROBLEMA CON ESTE CODIGO:
El codigo que está a continuación hace lo siguiente:

En el paso 1 reescala la imagen
En el paso 2 pega la imagen redimensionada sobre otra que mide 250 x 250
En el paso 3 agrega una marca de agua

Supongamos que la imagen original mide 560px x 960px al redimensionarla queda de 130 x 250 pixeles, en el paso 2 toma esta imagen y la "pega" sobre otra 250 x 250 de fondo blanco (centrandola horizontal y verticalmente).

El problema es que el fondo queda de color azul, con otras fotos el fondo queda de color negro. ¿Porque pasa esto si la imagen "base" tiene el fondo blanco. (yo necesito que el fondo sea blanco).

PD: la imagen del parámetro $base es un gif de 250 x 250 de color blanco.


<?PHP

$base = "base.gif";

PASO 1:
$altura = 250;

$ratio = ($dimensiones[1] / $altura);
$anchura = round($dimensiones[0] / $ratio);
$image = imagecreatetruecolor($anchura,$altura); //crea la nueva imagen
$FFF = imagecolorallocate($image, 255,255,255);
imagefill($image, 0, 0, $FFF);
imagecopyresampled ($image, $img, 0, 0, 0, 0, $anchura, $altura, $dimensiones[0], $dimensiones[1]);//reescala
imagejpeg($image,"$dir$image_name", $c1);

PASO 2:
//Pega el resultado sobre la base
$img = $dir.$image_name;
$im1 = imagecreatefromjpeg($img);
$ancho = imagesx($im1);
$alto = imagesy($im1);

$xpos = (250 - $ancho) / 2;
$ypos = (250 - $alto) / 2;

$im2 = imagecreatefromgif($base);
$im2 = imagecreatetruecolor (250,250);
imagecopy ($im2, $im1,$xpos,$ypos,0, 0,$ancho,$alto);


imagejpeg($im2,"$dir$image_name",95);

PASO 3:
//Crea el watermark
$pos = explode("-",$pos); //posición horizontal y vertical del watermark:
$wmhorz = $pos[0];
$wmvert = $pos[1];

$logo = imagecreatefrompng($watermark);
$margen = 0; //distancia entre el watermark y la orilla
$logoW =imagesx($logo); //Anchura del logo
$logoH =imagesy($logo); //Altura del logo
$anchura = 250;
imagecopy($im2, $logo, 0, 0, 0, 0, 250, 250); //Pone el logo
imagejpeg($im2,"$dir$image_name", 95);


?>

Foto original:


Resultado:


como pueden darse cuenta en el "resultado" el fondo es de color negro siendo que la imagen "$base" es blanca
__________________
Si el mundo es redondo ¿por que le pusieron planeta?
Entonces si hubiese sido plano le hubisen puesto "redondeta"

Última edición por huayayo; 16/09/2005 a las 20:41