Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/10/2013, 01:24
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
Respuesta: Editor de imágenes HTML5 + jQuery + PHP

Hola a todos.

Ya he solucionado el problema.

NSD

Gracias a estas líneas tuyas
Código PHP:
 $Fondo '0x'.$Fondo;
imagefilledrectangle($ImgFinal $Ancho-$Alto-, ($Fondo*1)); 
Las adapté y las he incorporado a mi programación, funcionando perfectamente.

Aquí dejo el resultado:
Código PHP:
   
    
// Set the Background color    
    
$background_color "FFFFFF";
    
$background_color "0x".$background_color;
    
    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
    
//    Original
//    $image_p = imagecreatetruecolor($pWidth, $pHeight);
    
    // Modified to set background color
    
$image_p imagecreatetruecolor($pWidth$pHeight);
    
    
// ****************************************************************
      // ********** NEXT LINE IS NEW TO SET BACKGROUND COLOR **************
    // ****************************************************************
    
imagefilledrectangle($viewport00$pWidth$pHeight, ($background_color 1));
    
    
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"]);
    
    
// ****************************************************************
     // ********** NEXT LINE IS NEW TO SET BACKGROUND COLOR **************
    // ****************************************************************
    
imagefilledrectangle($viewport00$_POST["viewPortW"], $_POST["viewPortH"], ($background_color 1));

    
    
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);
            }
    
        }
    } 
Con los 3 añadidos que marco en el código NEXT LINE IS NEW TO SET BACKGROUND COLOR me funciona perfectamente


Gracias y saludos!!!!


Javier

Última edición por el_javi; 01/10/2013 a las 04:22