Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Web-safe -värit

Sivun loppuun

Blaze [07.11.2004 22:29:38]

#

Web-safe -värit ovat ne 216 väriä, jotka saadaan punaisesta, vihreästä ja sinisestä sekoittamalla niitä suhteissa 00, 33, 66, 99, cc ja ff. Nämä värit näkyvät mahdollisimman samalla tavalla kaikilla selaimilla, alustoilla ja näyttötiloilla. Jos yrität sovittaa kuvaa taustaväriin, ei ole huono idea käyttää taustavärinä web-safe -väriä. Lisää aiheesta voi lukea (englanniksi) esimerkiksi osoitteesta http://www.lynda.com/hex.html

Tämä skripti tulostaa taulukon, josta nuo kaikki 216 väriä löytyvät heksakoodeineen.

Livenä taulukko löytyy osoitteesta http://pp.kpnet.fi/blaze/web/websafe/

Omistettu nimimerkki Meitsille :>

<?php
echo "<table>\n";
// Kasvatetaan kaikkia kolmea värikomponenttia aloittaen nollasta 0x33:n
// (desimaalina 51) askelin.
for($r = 0; $r <= 255; $r += 51) { // r niinkuin punainen
	for($g = 0; $g <= 255; $g += 51) { // g niinkuin vihreä
		echo "<tr>\n";
		for($b = 0; $b <= 255; $b += 51) { // ja b niinkuin sininen
			// Muodostetaan kolmesta komponentista yksi
			// heksadesimaaliluku muotoa rrggbb.
			// Ärrät saadaan paikoilleen kertomalla 0x10000:lla
			// (desimaalina 65536), geet kertomalla 0x100:lla
			// (desimaalina 256) ja beet kertomalla ykkösellä.
			// Näiden summa muutetaan merkkijonoksi helpompaa
			// käsittelyä varten.
			$vari = (string) dechex(65536 * $r + 256 * $g + $b);
			// Lisätään etunollat, jos puuttuvat
			while(strlen($vari) < 6) {
				$vari = '0' . $vari;
			}
			echo "<td style=\"background-color: #$vari\">$vari</td>\n";
		}
		echo "</tr>\n";
	}
}
echo "</table>\n";
?>

Deewiant [07.11.2004 22:55:58]

#

Kannattaapi lukea tämä juttu - ei niitä nk. web-safe värejä ole kuin 22 kappaletta...

Ihan jees skripti kuitenkin.

Meitsi [07.11.2004 23:10:54]

#

:>

renni [08.11.2004 01:08:37]

#

Oikeasti ei ole kuin 2 täysin turvallista väriä, musta ja valkoinen. Kaikki muut saattavat näkyä eri koneilla eri sävyisinä. Jos oikein tarkoiksi ruvetaan niin edes nuo kaksi eivät ole kaikilla samat.

Gwaur [08.11.2004 17:30:19]

#

"Mahdollisimman samalla tavalla jne.."
Entäs eri näytöt? ;)

Jyri [10.11.2004 16:39:52]

#

Entä jos kone tunnistaa vaan 16 väriä? :F no okei wine off.

Blaze [10.11.2004 16:43:48]

#

Älkää mulle valittako, jos web-safe -paletti ei toimi, en minä sitä oo keksiny! :P

D4_B34M [10.11.2004 22:51:35]

#

tää on nyt pilkun nussintaa mut oikeesti perjaatteessa ei oo olemassa yhtään väriä mikä näkys kaikkilla samallaisena koska jos vaihtelee näytön väriasetuksia valoa ynm..

ajv [10.11.2004 23:27:34]

#

Tämän kommentoinnin tarkoituksena on kommentoida koodivinkkiä ja antaa rakentavaa palautetta, ei nussia pilkkua.
Itse koodivinkki on hyvä jo pelkästään johdantonsa puolesta.
EDIT: Tossa on muuten purkahtava kohta

<?php
// Lisätään etunollat, jos puuttuvat
while(strlen($vari) < 6) {
   $vari = '0' . $vari;
}
//voi korvata:
$vari = sprintf("%06s",$vari);
?>

Toisaalta en tiedä vaikka olisi nopeampikin tuo while-looppi...

makeuu [16.11.2004 22:34:18]

#

Tämä on ihan mukava koodivinkki.. yhdyn ajv:n kommenttiin.

T.M. [17.11.2004 17:35:21]

#

Vieläkin optimoimisen varaa :)
->

$vari = sprintf("%02X%02X%02X", $r, $g, $b);

Poistaa while silmukan sekä värin laskemisen.

Blaze [17.11.2004 18:01:30]

#

Ai noinkin voi tehdä :o
Pitääpäs tutustua tuohon sprinf:n.

Metabolix [10.12.2011 02:48:26]

#

Värit voisi tulostaa myös kolmimerkkisinä, #369 on sama kuin #336699.

Pentu [27.07.2013 01:28:04]

#

Metabolix kirjoitti:

Värit voisi tulostaa myös kolmimerkkisinä, #369 on sama kuin #336699.

Samahan tuo.. Mutta eikös kuitenkin ole suositeltavampi tapa kirjoittaa nää värit kuusi numeroisena? Saatan toki olla väärässäkin.

Metabolix [27.07.2013 11:33:17]

#

Pentu kirjoitti:

Mutta eikös kuitenkin ole suositeltavampi tapa kirjoittaa nää värit kuusi numeroisena?

Ei siinä ole mitään erityisen suositeltavaa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta