jak w grafice zmienic wybrane kolory na inne, PHP Skrypty


[PHP] Jak w grafice zmienić wybrane kolory na inne?

0x01 graphic

Chcesz zmienić paletę kolorów w dowolnym obrazku lub wymienić na inne tylko określone kolory, jak w przykładzie:

0x01 graphic
  0x01 graphic

0x01 graphic

Często się zdarza, że w obrazkach trzeba wymienić określone kolory. Jeżeli nie chcesz mieć żółtego napisu, możesz zrobić czerwony (np. na czas walentynek), kiedy indziej możesz wykonać kolory dopasowane do pogody czy pory dnia lub wielkości zamówienia w sklepie internetowym.

Możliwości jest wiele. Naszym celem jest pobranie obrazka oryginalnego, zamiana dowolnych kolorów podanych jako składowe RGB na inne i zapisanie obrazka pod inną (lub tą samą) nazwą w katalogu. Efekty zamiany kilku kolorów widzisz w powyższym przykładzie.

Skrypt jest uniwersalny i bardzo łatwy w obsłudze, zobacz:

<?

$kolory = array(

array(255,0,0, 0,0,0), // czerwony na czarny

array(0,0,0, 255,255,255), // czarny na biały

array(0,255,0, 255,255,0), // zielony na żółty

array(255,255,0, 153,153,153) // żółty na szary

);

$img=ImageCreateFromPNG("klip1.png");

for ($i=0; $i<ImageColorsTotal($img); $i++) {

$c = ImageColorsForIndex($img, $i);

foreach ($kolory as $k) {

if ($c["red"]==$k[0] and $c["green"]==$k[1] and $c["blue"]==$k[2])

ImageColorSet($img, $i, $k[3], $k[4], $k[5]);

}

}

ImagePNG($img,"klip2.png");

ImageDestroy($img);

?>

<img src="klip1.png">

<img src="klip2.png">

W tablicy z kolorami, jako pierwsze w linii podajesz wartości RGB koloru zamienianego, a jako drugie koloru, jaki ma go zastąpić. Pierwsza linijka w tablicy to tablica kolorów: czerwonego (255,0,0), który stanie się czarnym (0,0,0). Możesz dodawać dowolną ilość par kolorów do zamiany.

Po wczytaniu obrazka klip1.png, w pętli for pobieramy ilość kolorów w palecie za pomocą ImageColorsTotal() i przechodzimy przez pętle tyle razy ile jest kolorów.

W pętli pobieramy kolejny kolor z palety za pomocą ImageColorsForIndex() i składowe tego koloru umieszczamy w tablicy asocjacyjnej $c. Teraz sprawdzamy, czy taki kolor jest w naszej tablicy kolorów do podmiany. Jeżeli tak, za pomocą ImageColorSet() przypisujemy mu nowy kolor.

Następnie można już zapisać plik na dysk za pomocą ImagePNG() i usunąć plik z pamięci za pomocą ImageDestroy(). I oto mamy drugi plik, w którym kolory są zamienione zgodnie z naszymi ustaleniami. Można je teraz wstawić na stronę za pomocą elementów img.



Wyszukiwarka

Podobne podstrony:
Jak zrobić przekierowanie z jednej strony na drugą, PHP Skrypty
Jak cenzurować wypowiedzi i brzydkie słowa na forum, PHP Skrypty
Jak zamienić tekst na grafikę, PHP Skrypty
Jak błyskawicznie zmienić negatywne emocje na linii czasu
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
jak miedzy stronami przesłać zmienne korzystajac z sesji, PHP Skrypty
Jak zrobić licznik pobrań plików ze strony, PHP Skrypty
jak wypisac zawartosc bazy danych dBase (dbf), PHP Skrypty
Jak wygenerować statyczny plik .html z bazy danych, PHP Skrypty
jak samodzielnie obliczyc numer dnia w dowolnym roku, PHP Skrypty
Jak odbierać dane pochodzące z różnych pól formularza, PHP Skrypty
Jak wysłać list do grup dyskusyjnych USENET, PHP Skrypty
jak stworzyc licznik klikniec ze statystyka dzienną, PHP Skrypty
jak wykonac strone z logowaniem do innej strony, PHP Skrypty
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
jak zmienic liczby na kod BCD dinary coded decimal, PHP Skrypty
Jak zrobić stronę dostępną na hasło tylko dla wybranych użytkowników, PHP Skrypty
Jak chronić adres e-mail na stronie przed spamem stosując przekierowanie, PHP Skrypty

więcej podobnych podstron