Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: HSV to RGB

punppis [11.06.2007 05:29:19]

#

Koitin tehdä PHP:lla sellasen hienon värikartan, mikä kaikissa kuvankäsittelyohjelmissakin on. Kuva on kuitenkin vain harmaaa, miksi?

<?php
header("Content-type: image/png");

function HSVtoRGB($h, $s, $v, $valinta) {
	$h = $h / 60;
	$s = $s / 100;
	$v = $v / 100;
	$i = floor($h);
	$f = $h - $i;
	if($i % 2 == 0) $f = 1 - $f;
	$m = $v * (1 - $s);
	$n = $v * (1 - $s * $f);
	if($i == 0) {
		$r = $v;
		$g = $n;
		$b = $m;
	}
	if($i == 1) {
		$r = $n;
		$g = $v;
		$b = $m;
	}
	if($i == 2) {
		$r = $m;
		$g = $v;
		$b = $n;
	}
	if($i == 3) {
		$r = $m;
		$g = $n;
		$b = $v;
	}
	if($i == 4) {
		$r = $n;
		$g = $m;
		$b = $v;
	}
	if($i == 5) {
		$r = $v;
		$g = $m;
		$b = $n;
	}

if($valinta == 1) return $r * 255;
if($valinta == 2) return $g * 255;
if($valinta == 3) return $b * 255;
}

$kuva=imagecreate(360,100);
for($saturation = 1; $saturation <= 100; $saturation++) {
	for($hue = 1; $hue <= 360; $hue++) {
                $R = floor(HSVtoRGB($hue, $saturation, 50, 1));
                $G = floor(HSVtoRGB($hue, $saturation, 50, 2));
                $B = floor(HSVtoRGB($hue, $saturation, 50, 3));

                $vari = imagecolorallocate($kuva, $R, $G, $B);
                imagesetpixel($kuva, $hue, $saturation, $vari);
	}
}
imagepng($kuva);
imagedestroy($kuva);

?>

http://en.wikipedia.org/wiki/HSV
http://www.alvyray.com/Papers/hsv2rgb.htm
http://punppis.arkku.net/kuva/kuva.php

Jäi vähän lyhyeks tää kun on kiire. Laittakaa viestii, jos ette tajua jotain :D

punppis [11.06.2007 07:45:28]

#

Kuva on siis osoitteessa http://punppis.arkku.net/testi.php, en pystynyt muokkaamaan :(

tsuriga [11.06.2007 12:19:04]

#

imagecreate -> imagecreatetruecolor. Ei tuo kyllä toimi kuitenkaan niin kuin halusit. Tulostele niitä väriarvoja vaikka tietyin välein, ja katso missä alkaa mennä vikaan, sieltä sitten jäljittelet askelia taaksepäin ja etsit vian.

punppis [11.06.2007 14:55:44]

#

Itseasiassa, nyt toimii just niinku ajattelin. En kyllä hyödy tästä mitään, mutta tulipahan opittua ja voi tietty olla joskus käyttöä. Kiitti sulle, vaikka vika olikin noin yksinkertainen :P

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta