Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/09/2013, 00:46
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

¿Es algo muy específico?
¿y los CMS o gestores de contenidos de las webs no llevan editor de imagen para que el cliente recorte o encuadre las imágenes de su producto a su gusto?

Yo pensaba que podría existir alguna herramienta "medianamente y ahecha"

Yo lo tengo hecho ya con Cropzoom pero me falta poder cambiar el color de fondo...

¿Alguien podría ayudarme a editar el PHP de Cropzoom para que se pueda configurar el color de fondo de la imagen de salida cuando sea JPG?

Este es el PHP del generador de imagen:
Código PHP:
<?php
    
//    echo("<pre>");
//    var_dump($_POST);
//    echo("</pre>");
    
    
    
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);
            }
    
        }
    }
    
?>
Si alguien aquí sabe cómo cambiar el color de fondo para JPG, por favor, que me lo diga o me ayude :)

Gracias!!!

Javier