Buenas tardes compañeros:D, tengo un problema con el cual ya tengo un buen rato sin poderlo solucionar y es que al momento de querer guardar una imagen con la función "imagejpeg" de la librería gd esta simplemente no me la guarda, quiza sea por el montonal de código que tengo, porque al momento de ver el source no me sale ningún error en el navegador, les dejo el codigo:
"para guardar la imagen se encuentra casi al final del codigo"
Código PHP:
<?
header("Content-type: image/jpeg");
if($_POST){
// Creamos la cadena aletoria
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$cad = "";
for($i=0;$i<12;$i++) {
$cad .= substr($str,rand(0,62),1);
}
// Fin de la creacion de la cadena aletoria
$tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
$tamaño_max="500000"; // Tamaño maximo permitido
if( $tamano < $tamaño_max){ // Comprovamos el tamaño
$destino = 'tmp' ; // Carpeta donde se guardata
$sep=explode('image/',$_FILES["file"]["type"]); // Separamos image/
$tipo=$sep[1]; // Optenemos el tipo de imagen que es
if($tipo == "gif" || $tipo == "pjpeg" || $tipo == "bmp"| $tipo == "jpeg" || $tipo == "png" || $tipo == "jpg" ){ // Si el tipo de imagen a subir es el mismo de los permitidos, segimos. Puedes agregar mas tipos de imagen
move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $destino . '/' .$cad.'.'.$tipo); // Subimos el archivo
}
else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo desimos
}
else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo desimos
}
$imagen = $destino.'/'.$cad.'.'.$tipo;
function redimensionar_imagen($imagen, $nombre_imagen_asociada)
{
//indicamos el directorio donde se van a colgar las imágenes
$directorio = "tmp/" ;
//establecemos los límites de ancho y alto
$nuevo_ancho = 438;
$nuevo_alto = 328;
//Recojo información de la imágen
$info_imagen = getimagesize($imagen);
$alto = $info_imagen[1];
$ancho = $info_imagen[0];
$tipo_imagen = $info_imagen[2];
//Determino las nuevas medidas en función de los límites
/*if($ancho > $nuevo_ancho OR $alto > $nuevo_alto)
{
if(($alto - $nuevo_alto) > ($ancho - $nuevo_ancho))
{
$nuevo_ancho = round($ancho * $nuevo_alto / $alto,0) ;
}
else
{
$nuevo_alto = round($alto * $nuevo_ancho / $ancho,0);
}
}
else //si la imagen es más pequeña que los límites la dejo igual.
{
$nuevo_alto = $alto;
$nuevo_ancho = $ancho;
} */
// dependiendo del tipo de imagen tengo que usar diferentes funciones
switch ($tipo_imagen) {
case 1: //si es gif …
$imagen_nueva = imagecreate($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromgif($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagegif($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
case 2: //si es jpeg …
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefromjpeg($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagejpeg($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
case 3: //si es png …
$imagen_nueva = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$imagen_vieja = imagecreatefrompng($imagen);
//cambio de tamaño…
imagecopyresampled($imagen_nueva, $imagen_vieja, 0, 0, 0, 0, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
if (!imagepng($imagen_nueva, $directorio . $nombre_imagen_asociada)) return false;
break;
}
return true; //si todo ha ido bien devuelve true
}
$nombre_imagen_asociada = "".$cad.".".$tipo."";
redimensionar_imagen($imagen, $nombre_imagen_asociada);
$imgbase = "source/imgbase.jpg";
$imgup = $destino.'/'.$cad.'.'.$tipo;
$imagena = imagecreatefromjpeg(''.$imgbase .'');
$imagen1 = imagecreatefromjpeg(''.$imgup .'');
imagecopymerge($imagena, $imagen1, 31, 31, 0, 0, 438, 328, 75);
//Colores
$blanco = imagecolorallocate($imagena, 255, 255, 255);
$gris = imagecolorallocate($imagena, 128, 128, 128);
$negro = imagecolorallocate($imagena, 0, 0, 0);
//Fuente
$fuente = 'verdanab.ttf';
$textoo = $_POST['texto'];
$textoo1 = $_POST['texto1'];
$linea3 = $_POST['linea3'];
//Centrar
$dimensions = imagettfbbox(20, 0, $fuente, $textoo);
$textWidth = abs($dimensions[4] - $dimensions[0]);
$xx =(imagesx($imagena)-$textWidth)/2;
$dimensions1 = imagettfbbox(12, 0, $fuente, $textoo1);
$textWidth1 = abs($dimensions1[4] - $dimensions1[0]);
$xx1 =(imagesx($imagena)-$textWidth1)/2;
$dimensions11 = imagettfbbox(12, 0, $fuente, $linea3);
$textWidth11 = abs($dimensions11[4] - $dimensions11[0]);
$xx11 =(imagesx($imagena)-$textWidth11)/2;
imagettftext($imagena, 21, 0, $xx, 388, $blanco, $fuente, $textoo);
imagettftext($imagena, 12, 0, $xx1, 410, $blanco, $fuente, $textoo1);
imagettftext($imagena, 12, 0, $xx11, 425, $blanco, $fuente, $linea3);
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$cadena = "";
for($i=0;$i<12;$i++) {
$cadena .= substr($str,rand(0,62),1);
}
$path ="tmp/".$cadena.".jpeg";
imagejpeg($imagena,$path);
imagedestroy($imagena);
?>