Foros del Web » Programando para Internet » PHP »

Devolver color de un pixel (Imágenes)

Estas en el tema de Devolver color de un pixel (Imágenes) en el foro de PHP en Foros del Web. Hola, me gustaría saber si existe alguna función que devuelva el color en hexadecimal de un pixel indicándole las coordenadas donde se encuentra dentro de ...
  #1 (permalink)  
Antiguo 09/02/2006, 12:32
Avatar de donpincho  
Fecha de Ingreso: enero-2002
Mensajes: 563
Antigüedad: 15 años, 11 meses
Puntos: 1
Devolver color de un pixel (Imágenes)

Hola, me gustaría saber si existe alguna función que devuelva el color en hexadecimal de un pixel indicándole las coordenadas donde se encuentra dentro de una imagen jpg.

Gracias ^_^
  #2 (permalink)  
Antiguo 09/02/2006, 13:12
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola donpincho:

Había un mensaje donde puse el código para leer pixeles de una imagen y generar tags para mastrarla... no encontré el mensaje, pero la página es esta: http://www.pepemolina.com/mapas/pixe...l.png&escala=1

El código es el que sigue:

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 = imagecreatefrompng($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;

?>
</style>
</head>
<body>
<?php
	if ($correcto)
		for ($i = 0; $i < $ancho; $i ++)
			for ($j = 0; $j < $alto; $j ++)
				echo "<div id='pixel_".$i."_$j' ></div>\r";
?>
</body>
</html>
Se lee con imagecolorat, y luego hay que decodificarlo.

Espero que te sirva.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 28/02/2006, 12:14
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
Caricatos

pero la imagen de donde la tomo de acuerdo con el codigo la toma de algun lugar
  #4 (permalink)  
Antiguo 28/02/2006, 12:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.544
Antigüedad: 15 años, 8 meses
Puntos: 1262
Hola payo22:

La imagen se pasa por el método get o por URL... fíjate que hay una unstrucción: if (isset($_GET["imagen"]))

Se trata de una imagen existente en internet, sino sería mucho más complejo

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:38.