Foros del Web » Programando para Internet » PHP »

Fondo transparente con halo negro en imagen PNG

Estas en el tema de Fondo transparente con halo negro en imagen PNG en el foro de PHP en Foros del Web. Buena snoches compañeros! Tengo un pequeño problema, estoy creando un sistema que procese las imagenes enviadas de un formulario y las suba. Si las imagenes ...
  #1 (permalink)  
Antiguo 29/12/2015, 17:04
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Sonrisa Fondo transparente con halo negro en imagen PNG

Buena snoches compañeros!
Tengo un pequeño problema, estoy creando un sistema que procese las imagenes enviadas de un formulario y las suba. Si las imagenes PNG tienen transparencias las quiero conservar, y de hecho lo consigo pero a medias, me explico, la imagen es trasparenete pero alrededor d ela parte no transparente se crea un halo/linea negro muy extraño y que por más que prueba cosas, no doy con la solución.
Este es el código:
Código PHP:
$what getimagesize($imgUrl);

switch(
strtolower($what['mime']))
{
    case 
'image/png':
        
$img_r imagecreatefrompng($imgUrl);
        
$source_image imagecreatefrompng($imgUrl);
        
$type '.png';
        break;
    case 
'image/jpeg':
        
$img_r imagecreatefromjpeg($imgUrl);
        
$source_image imagecreatefromjpeg($imgUrl);
        
error_log("jpg");
        
$type '.jpeg';
        break;
    case 
'image/gif':
        
$img_r imagecreatefromgif($imgUrl);
        
$source_image imagecreatefromgif($imgUrl);
        
$type '.gif';
        break;
    default: die(
'Tipo de imagen no soportada');
}

//Comprobando escritura de acceso al directorio
if(!is_writable(dirname($output_filename))){
    
$response = Array(
        
"status" => 'error',
        
"message" => 'No se puede recortar el archivo'
    
);    
}else{
    
// Cambiar el tamaño original por el tamaño del editor
    
$resizedImage imagecreatetruecolor($imgW$imgH);
    
imagecopyresampled($resizedImage$source_image0000$imgW$imgH$imgInitW$imgInitH);
    
    
// Rotar la imagen
    
$rotated_image imagerotate($resizedImage, -$angle0);
    
// Nueva anchura y altura de la imagen rotada
    
$rotated_width imagesx($rotated_image);
    
$rotated_height imagesy($rotated_image);
    
// diferencia entre los tamaños rotados y los originales
    
$dx $rotated_width $imgW;
    
$dy $rotated_height $imgH;
    
// crop de la iamgen rotada para encajar el rectangulo
    
$cropped_rotated_image imagecreatetruecolor($imgW$imgH);
    
imagecolortransparent($cropped_rotated_imageimagecolorallocate($cropped_rotated_image000));
    
imagecopyresampled($cropped_rotated_image$rotated_image00$dx 2$dy 2$imgW$imgH$imgW$imgH);
    
// crop de la imagen en el area seleccionada
    
$final_image imagecreatetruecolor($cropW$cropH);
    
imagecolortransparent($final_imageimagecolorallocate($final_image000));
    
imagecopyresampled($final_image$cropped_rotated_image00$imgX1$imgY1$cropW$cropH$cropW$cropH);
    
// Salida final imagen png
    
imagepng($final_image$output_filename.$type$png_quality);
    
//imagejpeg($final_image, $output_filename.$type, $jpeg_quality);
    
$response = Array(
        
"status" => 'success',
        
"url" => $output_filename.$type
    
);

Agradecería cualquier posible ayuda.
Saludos! :)
  #2 (permalink)  
Antiguo 29/12/2015, 20:57
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Fondo transparente con halo negro en imagen PNG

esto lo imprimes en un div? o todo lo haces desde php? ya que podrias agregar en css una clase que tenga el background transparent
  #3 (permalink)  
Antiguo 30/12/2015, 03:05
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Fondo transparente con halo negro en imagen PNG

Gracias NelsonJPG por la respuesta! :)
El archivo es un php que solo sirve para procesar los datos enviados, carece de estilos! :(
Saludos!

Etiquetas: formulario, negro, png
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 06:08.