mira me parecio interesante esto por eso me tome la libertad de escribir el codigo que sella la imagen haber que te parece mira para sellar la imagen puedes usar png,jp y gif peor solo puedes crear imagenes jpg y png ademas le añadi la opcion de crear thumbnails con solo :
miscript.php?imagen=nombreimagenaparchear.png&alto =150&ancho=150 puedes dejar en blanco el ancho y solo tomara un ratio xxD, si no quieres thumnail solo pones :
miscript.php?imagen=nombreimagenaparchear.png
las imagenes se generan al vuelo pero si quieres que se guarden agrega:
para thumbnails:
miscript.php?imagen=nombreimagenaparchear.png&alto =150&ancho=150&nombre=mifoto.jpg
normal:
miscript.php?imagen=nombreimagenaparchear.png&nomb re=mifoto.jpg
se guardan en el directorio que especifiques en la variable $dir
ojala no te alla confundido y si es asi hasmelo saber, y por cierto creen que deba estar en las faqs?
ojo solo funciona con GD 2 o superior para que funcione con versiones anteriores deben cambiar peuqeñas cosas y ademas para parchear gifs y ponerlos como sello deben tener la opcion de leer gif's
codigo
Código PHP:
<?
ob_start();
/* PARCHEADOR POR ELITE [email][email protected][/email]
int imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)
*/
if(!empty($_GET['imagen']))
{
$imagen = $_GET['imagen'];
$promo = "publicidad.gif"; //la imagen que sellara
$dir = "imagenes/"; //donde se guardaran las imagenes que no son al vuelo permisos CHMOD 0777
$explode = explode(".",$imagen);
$final = end($explode);
$final = strtolower($final);
switch($final)
{
case "jpg":
$im = imagecreatefromjpeg($imagen);
$type = "image/jpeg";
break;
case "png":
$im = imagecreatefrompng($imagen);
$type = "image/png";
break;
case "gif":
$type = "image/gif";
$im = imagecreatefromgif($imagen);
break;
}
$promoEXT = explode(".",$promo);
$promoFINAL = end($promoEXT);
$promoFINAL = strtolower($promoFINAL);
switch($promoFINAL)
{
case "jpg":
$promo_ = imagecreatefromjpeg($promo);
break;
case "png":
$promo_ = imagecreatefrompng($promo);
case "gif":
$promo_ = imagecreatefromgif($promo);
}
$imX = imagesx($im);
$imY = imagesy($im);
$tam = getimagesize($promo); //imagesx e imagesy me daban problemas asi que use este
$promoX = $tam[0];
$promoY = $tam[1];
$posX = $imX - $promoX;
$posY = 0;
imagecopy($im,$promo_,$posX,$posY,0,0,$promoX,$promoY);
// imagecopymerge($im,$promo_,$posX,$posY,0,0,$promoX,$promoY,100);
if((!empty($_GET['ancho'])) || (!empty($_GET['alto'])))
{
if(!isset($_GET['ancho']))
{
$tamanio = getimagesize($imagen);
$asp = ($tamanio[1] / $_GET['alto']);
$ancho = round($tamanio[0] / $asp);
}
else
{
$ancho = $_GET['ancho'];
}
/*
imagecopyresized ( int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
*/
$thumb = imagecreatetruecolor($ancho,$_GET['alto']);
imagecopyresampled ($thumb,$im, 0, 0, 0, 0,$ancho,$_GET['alto'],$imX,$imY);
if(empty($_GET['name']))
{
imagejpeg($thumb);
imagedestroy($thumb);
header("Content-Type: ".$type);
header("Content-Disposition: inline; filename=elite.jpg");
}
else
{
$explode = explode(".",$_GET['name']);
$end = end($explode);
$end = strtolower($end);
switch($end)
{
case "jpg":
imagejpeg($thumb,$dir.$_GET['name']);
break;
case "png":
imagepng($thumb,$dir.$_GET['name']);
break;
}
}
}
else
{
//
if(empty($_GET['name']))
{
imagejpeg($im);
imagedestroy($im);
header("Content-Type: ".$type);
header("Content-Disposition: inline; filename=elite.jpg");
}
else
{
$explode = explode(".",$_GET['name']);
$end = end($explode);
$end = strtolower($end);
switch($end)
{
case "jpg":
imagejpeg($im,$dir.$_GET['name']);
break;
case "png":
imagepng($im,$dir.$_GET['name']);
break;
}
//
}
}
}
else
{
// si accesesan directo muestras error o no se
}
ob_end_flush();
?>