Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/09/2013, 07:56
Avatar de el_javi
el_javi
 
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Modificar código para cambiar color de imagen generada

Hola a todos.

Tengo este código PHP

Código PHP:
if (!isset($_POST["imageSource"])) {
    
$_POST["imageSource"] = "test.jpg";
}

list(
$width$height) = getimagesize($_POST["imageSource"]);

$viewPortW $_POST["viewPortW"];
$viewPortH $_POST["viewPortH"];
$pWidth $_POST["imageW"];
$pHeight =  $_POST["imageH"];
$ext end(explode(".",$_POST["imageSource"]));
$function returnCorrectFunction($ext);
$image $function($_POST["imageSource"]);
$width imagesx($image);
$height imagesy($image);
// Resample
$image_p imagecreatetruecolor($pWidth$pHeight);
setTransparency($image,$image_p,$ext);
imagecopyresampled($image_p$image0000$pWidth$pHeight$width$height);
imagedestroy($image);
$widthR imagesx($image_p);
$hegihtR imagesy($image_p);

$selectorX $_POST["selectorX"];
$selectorY $_POST["selectorY"];

if(
$_POST["imageRotate"]){
    
$angle 360 $_POST["imageRotate"];
    
$image_p imagerotate($image_p,$angle,0);

    
$pWidth imagesx($image_p);
    
$pHeight imagesy($image_p);

    
//print $pWidth."---".$pHeight;

    
$diffW abs($pWidth $widthR) / 2;
    
$diffH abs($pHeight $hegihtR) / 2;

    
$_POST["imageX"] = ($pWidth $widthR $_POST["imageX"] - $diffW $_POST["imageX"] + $diffW);
    
$_POST["imageY"] = ($pHeight $hegihtR $_POST["imageY"] - $diffH $_POST["imageY"] + $diffH);
}



$dst_x $src_x $dst_y $src_y 0;

if(
$_POST["imageX"] > 0){
    
$dst_x abs($_POST["imageX"]);
}else{
    
$src_x abs($_POST["imageX"]);
}
if(
$_POST["imageY"] > 0){
    
$dst_y abs($_POST["imageY"]);
}else{
    
$src_y abs($_POST["imageY"]);
}


$viewport imagecreatetruecolor($_POST["viewPortW"],$_POST["viewPortH"]);
setTransparency($image_p,$viewport,$ext);

imagecopy($viewport$image_p$dst_x$dst_y$src_x$src_y$pWidth$pHeight);
imagedestroy($image_p);


$selector imagecreatetruecolor($_POST["selectorW"], $_POST["selectorH"]);
setTransparency($viewport,$selector,$ext);
imagecopy($selector$viewport00$selectorX$selectorY$_POST["viewPortW"], $_POST["viewPortH"]);

if (isset(
$_GET["destino"]) && !empty($_GET["destino"])) {
    
$file "../../".$_GET["destino"];
} else {
    
$file "test".time().".".$ext;
}

parseImage($ext,$selector,$file);
imagedestroy($viewport);
//Return value
echo $file;
/* Functions */

function determineImageScale($sourceWidth$sourceHeight$targetWidth$targetHeight) {
    
$scalex =  $targetWidth $sourceWidth;
    
$scaley =  $targetHeight $sourceHeight;
    return 
min($scalex$scaley);
}

function 
returnCorrectFunction($ext){
    
$function "";
    switch(
$ext){
        case 
"png":
            
$function "imagecreatefrompng";
            break;
        case 
"jpeg":
            
$function "imagecreatefromjpeg";
            break;
        case 
"jpg":
            
$function "imagecreatefromjpeg";
            break;
        case 
"gif":
            
$function "imagecreatefromgif";
            break;
    }
    return 
$function;
}

function 
parseImage($ext,$img,$file null){
    switch(
$ext){
        case 
"png":
            
imagepng($img,($file != null $file ''));
            break;
        case 
"jpeg":
            
imagejpeg($img,($file $file ''),100);
            break;
        case 
"jpg":
            
imagejpeg($img,($file $file ''),100);
            break;
        case 
"gif":
            
imagegif($img,($file $file ''));
            break;
    }
}

function 
setTransparency($imgSrc,$imgDest,$ext){

    if(
$ext == "png" || $ext == "gif"){
        
$trnprt_indx imagecolortransparent($imgSrc);
        
// If we have a specific transparent color
        
if ($trnprt_indx >= 0) {
            
// Get the original image's transparent color's RGB values
            
$trnprt_color    imagecolorsforindex($imgSrc$trnprt_indx);
            
// Allocate the same color in the new image resource
            
$trnprt_indx    imagecolorallocate($imgDest$trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
            
// Completely fill the background of the new image with allocated color.
            
imagefill($imgDest00$trnprt_indx);
            
// Set the background color for new image to transparent
            
imagecolortransparent($imgDest$trnprt_indx);
        }
        
// Always make a transparent background color for PNGs that don't have one allocated already
        
elseif ($ext == "png") {
            
// Turn off transparency blending (temporarily)
            
imagealphablending($imgDesttrue);
            
// Create a new transparent color for image
            
$color imagecolorallocatealpha($imgDest000127);
            
// Completely fill the background of the new image with allocated color.
            
imagefill($imgDest00$color);
            
// Restore transparency blending
            
imagesavealpha($imgDesttrue);
        }

    }

Es de la herramienta Cropzoom

El código tal cual de la herramienta, genera imágenes con fondo NEGRO.

Yo necesito poder administrar (controlar desde el código) el color de fondo.
Unas veces negro, otras gris, otras blanco...

¿Alguien sabría decirme cómo puedo hacer que el color de fondo cambie en este código?


El resto de funcionalidades de Cropzoom son correctas.

Gracias y un saludo.