Hola, te paso este codigo, seguramente esta es la peor forma de hacerlo pero en su momento me saco de apuros. Te comento que tenia 3 marcas de aguas diferentes en PNG en diferentes tamaños y con la funcion elegia cual usar.
Si vas a trabajar con un solo formato le podes quitar bastante codigo, ademas tratá de solucionar el tema de trabajar con temporales, cosa que yo no puede y tenia que guardar cada imagen que generaba.
Espero que la explicacion y el codigo se entiendan, me gustaria escuchar sus comentarios para poder mejorarlo.
Muchas Graias y suerte.
Código PHP:
<?
function marca($nombre,$tama,$carpeta,$tipom,$formato){
if($tipom == 0)
{
$marca = "marca00.png";
$mancho = 200;
$malto = 57;
}
elseif($tipom == 1)
{
$marca = "marca01.png";
$mancho = 150;
$malto = 43;
}
elseif($tipom == 2)
{
$marca = "marca02.png";
$mancho = 100;
$malto = 28;
}
if($formato=="gif") {
// Creacion de la imagen nueva
$_Imagen1 = imagecreatefromgif("res/$nombre");
$_Imagen2 = imagecreatefrompng("foto/$marca");
//200,170 >> Tamaño de 2º imagen
$ancho = $tama[0];
$alto = $tama[1];
$_X = $ancho - $mancho;
$_Y = $alto - $malto;
imagecopy($_Imagen1,$_Imagen2,$_X,$_Y,0,0,$mancho,$malto);
imagegif($_Imagen1,"$carpeta/tmp/$nombre");
}
elseif($formato=="jpg") {
// Creacion de la imagen nueva
$_Imagen1 = imagecreatefromjpeg("res/$nombre");
$_Imagen2 = imagecreatefrompng("foto/$marca");
//200,170 >> Tamaño de 2º imagen
$ancho = $tama[0];
$alto = $tama[1];
$_X = $ancho - $mancho;
$_Y = $alto - $malto;
imagecopy($_Imagen1,$_Imagen2,$_X,$_Y,0,0,$mancho,$malto);
imagejpeg($_Imagen1,"$carpeta/tmp/$nombre");
}
elseif($formato=="png") {
// Creacion de la imagen nueva
$_Imagen1 = imagecreatefrompng("res/$nombre");
$_Imagen2 = imagecreatefrompng("foto/$marca");
//200,170 >> Tamaño de 2º imagen
$ancho = $tama[0];
$alto = $tama[1];
$_X = $ancho - $mancho;
$_Y = $alto - $malto;
imagecopy($_Imagen1,$_Imagen2,$_X,$_Y,0,0,$mancho,$malto);
imagepng($_Imagen1,"$carpeta/tmp/$nombre");
}
}
function marca2($nombre,$tama,$carpeta,$tipom,$formato,$size){
if($tipom == 0)
{
$marca = "marca00.png";
$mancho = 200;
$malto = 57;
}
elseif($tipom == 1)
{
$marca = "marca01.png";
$mancho = 150;
$malto = 43;
}
elseif($tipom == 2)
{
$marca = "marca02.png";
$mancho = 100;
$malto = 28;
}
if($formato=="gif") {
// Creacion de la imagen nueva
$_Imagen1 = imagecreatefromgif("res/$nombre");
$_Imagen2 = imagecreatefrompng("foto/$marca");
//200,170 >> Tamaño de 2º imagen
$_Imagen1b = imagecreatetruecolor($tama[0],$tama[1]);
imagecopyresized($_Imagen1b,$_Imagen1,0,0,0,0,$tama[0],$tama[1],$size[0],$size[1]);
$ancho = $tama[0];
$alto = $tama[1];
$_X = $ancho - $mancho;
$_Y = $alto - $malto;
imagecopy($_Imagen1b,$_Imagen2,$_X,$_Y,0,0,$mancho,$malto);
imagegif($_Imagen1b,"$carpeta/tmp/$nombre");
}
elseif($formato=="jpg") {
// Creacion de la imagen nueva
$_Imagen1 = imagecreatefromjpeg("res/$nombre");
$_Imagen2 = imagecreatefrompng("foto/$marca");
//200,170 >> Tamaño de 2º imagen
$_Imagen1b = imagecreatetruecolor($tama[0],$tama[1]);
imagecopyresized($_Imagen1b,$_Imagen1,0,0,0,0,$tama[0],$tama[1],$size[0],$size[1]);
$ancho = $tama[0];
$alto = $tama[1];
$_X = $ancho - $mancho;
$_Y = $alto - $malto;
imagecopy($_Imagen1b,$_Imagen2,$_X,$_Y,0,0,$mancho,$malto);
imagejpeg($_Imagen1b,"$carpeta/tmp/$nombre");
}
elseif($formato=="png") {
// Creacion de la imagen nueva
$_Imagen1 = imagecreatefrompng("res/$nombre");
$_Imagen2 = imagecreatefrompng("foto/$marca");
//200,170 >> Tamaño de 2º imagen
$_Imagen1b = imagecreatetruecolor($tama[0],$tama[1]);
imagecopyresized($_Imagen1b,$_Imagen1,0,0,0,0,$tama[0],$tama[1],$size[0],$size[1]);
$ancho = $tama[0];
$alto = $tama[1];
$_X = $ancho - $mancho;
$_Y = $alto - $malto;
imagecopy($_Imagen1b,$_Imagen2,$_X,$_Y,0,0,$mancho,$malto);
imagepng($_Imagen1b,"$carpeta/tmp/$nombre");
}
}
?>