Recursos y Descargas

Esto no es un blog. Es una sección que programé para ir publicando aquellas cositas que me parecen interesantes y, por cualquier motivo, quiero tener a mano. Copia lo que quieras, usa lo que quieras (pero respeta sus licencias).

Marca de Agua en PHP

Escrito por: Martín el 11-05-2009 16:37:05

Marca de Agua en PHP

Hace unos días, necesitando crear dinámicamente una marca de agua sobre las fotos que subía por file upload en PHP, programé unos cambios a una función que uso habitualmente para los upload, con lo que se fusionan ambas imágenes.

Aunque en el ejemplo, la marca de agua es excesiva, puede hacerse a tu gusto, siempre que exportes el archivo en formato PNG 32 con fondo transparente.

Puse una DEMO del funcionamiento en esta dirección, donde, a partir de la imagen subida, se genera una copia con marca de agua y una miniatura sin marca alguna.

¿El código?
Muy fácil, aquí abajo lo tienes.

Que lo disfrutes!

Bookmark and Share

Código PHP

function foto($img_original,$img_nueva,$img_nueva_anchura,$img_nueva_altura,$img_nueva_calidad,$extension){
	$watermark = "archivos/ejemplo.png";
	$im = imagecreatefrompng($watermark);
	if (strtolower($extension)=="jpg") $img = imagecreatefromjpeg($img_original);
	if (strtolower($extension)=="gif") $img = imagecreatefromgif($img_original);
	if (strtolower($extension)=="png") $img = imagecreatefrompng($img_original);
	$ancho = imagesx($img);
	$alto = imagesy($img);
	$nuevoalto = $img_nueva_anchura*$alto/$ancho;
	$thumb = imagecreatetruecolor($img_nueva_anchura,$nuevoalto);
	imagecopyresampled($thumb,$img,0,0,0,0,$img_nueva_anchura,$nuevoalto,$ancho,$alto);
	$nuevoalto2 = 150*$alto/$ancho;
	$thumb2 = imagecreatetruecolor(150,$nuevoalto2);
	imagecopyresampled($thumb2,$img,0,0,0,0,150,$nuevoalto2,$ancho,$alto);
	imagecopy($thumb, $im, (imagesx($thumb)/2)-(imagesx($im)/2), (imagesy($thumb)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
	if ($extension=="jpg") {imagejpeg($thumb,"archivos/".$img_nueva,$img_nueva_calidad);imagejpeg($thumb2,"archivos/th_".$img_nueva,$img_nueva_calidad);}
	if ($extension=="gif") {imagegif($thumb,"archivos/".$img_nueva,$img_nueva_calidad);imagegif($thumb2,"archivos/th_".$img_nueva,$img_nueva_calidad);}
	if ($extension=="png") {imagepng($thumb,"archivos/".$img_nueva,$img_nueva_calidad);imagepng($thumb2,"archivos/th_".$img_nueva,$img_nueva_calidad);}
}
if($_POST["accion"]!="") $_GET["accion"]=$_POST["accion"];
if(!$_GET[accion]) $_GET[accion]="form";

switch($_GET[accion])
	{
		case "subir":
		{
			echo "<h1>Ver resultado.</h1>";
			$nombre = time();
			if (is_uploaded_file($_FILES["archivo1"]["tmp_name"]))
			{
			$extension = explode(".",$_FILES["archivo1"]["name"]); 
			$hay = count($extension)-1;
			$ext = strtolower($extension[$hay]);
			$nuevonombre = $nombre.".".$ext;
			$dir ="archivos/";
			chmod("$dir", 0777);
			if ($ext=="jpg" || $ext=="gif" || $ext=="png") foto($_FILES['archivo1']['tmp_name'],$nuevonombre,'640','','80',$ext);
			else move_uploaded_file($_FILES["archivo1"]["tmp_name"],"$dir/$nuevonombre");
			}
			echo "<img src='archivos/$nuevonombre' /><img src='archivos/th_$nuevonombre' />";
			break;
		}
		case "form":
		{
			echo "<h1>Agregar una Imagen.</h1>";
			echo "<form method=POST action=".$_SERVER["PHP_SELF"]." enctype=multipart/form-data>";
			echo "<fieldset>Foto 1:<input type=file name=archivo1 /></fieldset>";
			echo "<fieldset><input type=hidden name=accion value=subir /><input type=submit name=submit value='Enviar' class='enviar' />";
			echo "</fieldset></form>";
			break;
		}
	}
	echo "<p>| <img src=images/page_add.png alt='' align=absmiddle border=0 /> <a href=".$_SERVER["PHP_SELF"]."?accion=form>Agregar un registro</a> |</p>";

 

 

Otros recursos:

Yo digo

Ver todos los Comentarios

¿Sabías qué?

Ver todos los Recursos

facebookBúscame en Facebook

twitterSígueme en Twitter

© 2010 Martin Iglesias - Todos los derechos reservados

Creative Commons License Mejor con Firefox 3 Valid XHTML 1.0 Transitional ¡CSS Válido! Suscribete a mi RSS Directorio de Desarrollo de páginas web Add to Technorati Favorites