les cuento, que es muy sencillo, pongo el codigo tal cual como lo tengo en la clase.
Nota: Etoy usando codeigniter como framework.
Código PHP:
class Banners extends Controller {
function Banners ()
{
#setea las variables iniciales
parent::Controller();
$this->load->helper('form');
$this->load->library('validation');
}
function index()
{
if (false == $this->site_sentry->is_logged_in()) #si no esta logueado lo devuelve al login
{
redirect('login/logout', 'location');
exit;
}
}
function crear()
{
if (false == $this->site_sentry->is_logged_in()) #si no esta logueado lo devuelve al login
{
redirect('login/logout', 'location');
exit;
}
$accion= $this->input->post('pageaction');
#guarda un nuevo archivo
if('add' === $accion)
{
//echo "sube el archivo";
$archivo = $_FILES["userfile"]["tmp_name"];
if (trim($archivo) != "")
{
$filePath = 'uploads/images/banner/';
#carga los parametros para subir el archivo
$config['upload_path'] = $filePath;
$config['allowed_types'] = 'gif|jpg|png';
$field_name = "userfile";
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
pprint_r($error);
//$this->load->view('upload_form', $error);
}
else
{
#el archivo se subio correctamente
$dataupload = array('upload_data' => $this->upload->data());
$archivo_nombre = $dataupload['upload_data']['file_name'];
$archivo_tipo = $dataupload['upload_data']['file_type'];
$ext = $dataupload['upload_data']['image_type'];
pprint_r($dataupload);
#Redimensiono la imagen
$config['source_image'] = $filePath . $archivo_nombre;
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 80;
$config['height'] = 80;
$config['quality'] = 100;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$img1 = $filePath . "marco.jpg"; // imagen de fondo
$img2 = $filePath . $archivo_nombre; //imagen subida
// Creamos las dos imágenes a utilizar
$imagen1 = imagecreatefromjpeg($img1);
if ($ext == 'jpg' || $ext == 'jpeg')
{
$imagen2 = imagecreatefromjpeg($img2);
}
else if ($ext == 'png')
{
$imagen2 = imagecreatefrompng($img2);
}
else if ($ext == 'gif')
{
$imagen2 = imagecreatefromgif($img2);
}
if($imagen2)
{
$x = intval(imagesx($imagen1)-imagesx($imagen2))/2;
$y = intval(imagesy($imagen1)-imagesy($imagen2))/2;
imagecopy($imagen1,$imagen2,$x,$y,0,0,80,80);//imagecopy($img1,$img2,x1,y1,x2,y2,ancho,alto);
#guarda la nueva imagen
if ($ext == 'jpg' || $ext == 'jpeg')
{
imagejpeg($imagen1, $filePath .$archivo_nombre);
}
else if ($ext == 'png')
{
imagePng($imagen1, $filePath .$archivo_nombre);
}
else if ($ext == 'gif')
{
ImageGif($imagen1, $filePath .$archivo_nombre);
}
else
{
imagejpeg($img,$save_path,85);
}
// Destruimos ambas imágenes
imagedestroy($imagen2);
imagedestroy($imagen1);
#aqui guarda en base de datos
}
else
{
echo "No fue posible aplicarle el fondo a la imagen";
#que elimine la imagen que subio
}
#todo exitoso, redirecciona a la pagina principal
}
}
else
{
echo "debe seleccionar un archivo de imagen";
}
}
else
{
$data['edv_titulo'] = 'Banners ->Crear banner';
$data2['prueba'] = "";
$data['edv_body'] = ($this->load->view('banners/crear',$data2,true));
$this->load->view('home/plantilla_admin', $data);
}
}
}