Ver Mensaje Individual
  #13 (permalink)  
Antiguo 31/01/2007, 11:20
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: Pintar sobre una imagen

Hola:

Mejor que un link, pongo el código:

Código:
<html>
<head>
<style type="text/css">
<?php
	function hexa($n)	{
		$digitosHexa = "0123456789ABCDEF";
		return $digitosHexa[$n / 16].$digitosHexa[$n % 16];
	}

	$correcto = true;

	if (isset($_GET["imagen"]))	{

		$imagen = $_GET["imagen"];
		if (isset($_GET["escala"])) $escala = $_GET["escala"];
		else $escala = 1;
		echo "div\t{position: absolute; width: $escala"."px; height: $escala"."px;}\r";
		$img = imagecreatefromstring(fread(fopen($imagen, "rb"), filesize($imagen)));

		if ($img)	{
			$ancho = imagesx($img);
			$alto = imagesy($img);
			for ($i = 0; $i < $ancho; $i ++)

				for ($j = 0; $j < $alto; $j ++)	{
					$pixelxy = imagecolorat($img, $i, $j);
					$rgb = imagecolorsforindex($img, $pixelxy);
					echo "#pixel_".$i."_$j {background-color: #"
						.hexa($rgb["red"])
						.hexa($rgb["green"])
						.hexa($rgb["blue"])
						."; left: ".($i * $escala)
						."; top: ".($j * $escala).";}\r";
				}
		}// fin if ($img)
		else
			$correcto = false;
	}// fin if (isset())
	else
		$correcto = false;

?>
body	{
	overflow: hidden;
}
</style>
<script>
function acomodar(ancho, alto)	{
	if (parent.acomodar) parent.acomodar(ancho, alto);
	else	alert("ancho: " + ancho + "\nalto: " + alto);
}

var pintar = "#000000";
var activa = false;
function activar_color(cual)	{
	//alert(cual);
	pintar = cual;
}

function pintando(que)	{
	if (activa) que.style.backgroundColor = pintar;
}
</script>
</head>
<body onload="acomodar(<? echo ($ancho * $escala).", ".($alto * $escala);?>)">
<?php
	if ($correcto)
		for ($i = 0; $i < $ancho; $i ++)
			for ($j = 0; $j < $alto; $j ++)
				echo "<div id='pixel_".$i."_$j' onmouseup='activa = false' onmousedown='activa = true' onmousemove='pintando(this)'></div>\r";
?>
</body>
</html>
En condiciones normales, comparto mis códigos.

La cuestión para generar una imagen sería la forma inversa, o sea crear la imagen con imagecreate(ancho, alto), y escribir pixel a pixel...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo