Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak uzyskać kolory piksela?
spenalzo
post
Post #1





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Hej
zgodnie z tym co napisał manual, do wyciągnięcia poszczegolnych składowy (r,g i (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) konkretnego koloru piksela należy użyć tego:
[php:1:9fc999b2f6]<?php
$rgb=imagecolorat($im,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
?>[/php:1:9fc999b2f6]
ale nic z tego nie działa i pokazuje zawsze zero, za wyjątkiem $b - zawsze 86. Czemu?

Drugie pytanie: jak przełożyć uzyskane składowe na wartość szesnastkową (do HTMLa)? Próbowałem na różne sposoby z funkcją dechex ale nie wychodziło z tego nic, co by przypominało taką wartość :-)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adwol
post
Post #2





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
Hej
zgodnie z tym co napisał manual, do wyciągnięcia poszczegolnych składowy (r,g i (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) konkretnego koloru piksela należy użyć tego:
[php:1:6cbd11c2da]<?php
$rgb=imagecolorat($im,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
?>[/php:1:6cbd11c2da]
ale nic z tego nie działa i pokazuje zawsze zero, za wyjątkiem $b - zawsze 86. Czemu?

Problem występuje gdy tworzysz nowy obrazek za pomocą imagecreate() bądź wczytujesz go z pliku o formacie, który ma indeksowane kolory (np. gif). Wtedy imagecolorat() zwraca Ci indeks tego koloru, a nie faktyczną wartość RGB. Dla plików które przetrzymują kolory w postaci trójki RGB dla każdego piksela lub przy tworzeniu nowego obrazka za pomocą imagecreatetruecolor(), zwracany kolor jest w postaci RGB.
Cytat
Drugie pytanie: jak przełożyć uzyskane składowe na wartość szesnastkową (do HTMLa)? Próbowałem na różne sposoby z funkcją dechex ale nie wychodziło z tego nic, co by przypominało taką wartość :-)

[php:1:6cbd11c2da]<?php
sprintf("#%02x%02x%02x", $r, $g, $(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) ;
?>[/php:1:6cbd11c2da]
PS. Podziękowania dla uboottda za pomoc w rozgryzieniu problemu z imagecolorat(). (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 02:41