Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 10.04.2007 Skąd: znienacka. Ostrzeżenie: (0%)
|
Mój problem jest następujący, muszę użyć GD library z którego nigdy wcześniej nie korzystałem i nie mam pojęcia co i jak, a w manualu znalazłem ledwie 3 przykłady i raczej nie rozjaśniły mi zbytnio tematu więc zwracam się o pomoc.
Jeśli dobrze rozumuję to powinienem zacząć od: $obrazek = imagecreatefrompng('obrazek.png') Dalej jakoś wypełnić wszystko poza alfą niebieskim kolorem. Zostanie jeszcze zapisać wynik chyba przy pomocy imagepng() nałożyć na siebie 2 obrazki ale z tym już sobie poradzę. Na razie największy problem to wypełnianie kolorem wszystkiego poza alfą. Z góry dziękuję i pozdrawiam. Ten post edytował Flapper 5.04.2009, 00:33:55 |
|
|
|
![]() |
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%)
|
Chcesz wszystkie pixele zamienić na niebieski (RGB = 0,0,255) czy chcesz wypełnić to odcieniami niebieskiego liczonymi z oryginalnych pixeli?
Jeśli chcesz przelecieć po wszystkich pixelach i coś z każdym zrobić (zamienić, sprawdzić itp.) to wystarczy prosty kodzik:
Co do kanału alpha to trzeba najpierw ustawić
a kolor stworzyć za pomocą
Dużo szybciej i prościej przekształca się grafiki używając klasy przeznaczonej do tego celu. Możesz zajrzeć w moją: http://luq10.wordpress.com/2009/03/17/filt...raficzne-w-php/ Ten post edytował #luq 5.04.2009, 15:32:45 -------------------- Moja gra - scraby.io
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 10.04.2007 Skąd: znienacka. Ostrzeżenie: (0%)
|
I później tą alfę robię dodając mniejwięcej taki if:
If (*kolor pixela* != *kolor alfy*){ imagesetpixel( $img, $j, $i, $color ); } Dobrze myślę? |
|
|
|
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%)
|
Szczerze to nie wiem co dokładnie chcesz zrobić.
Porównywanie kanału alpha z kolorem pixela jest bez sensu. Kanał alpha definiuje w jakim stopniu dany pixel jest przezroczysty i jest to wartość z zakresu 0-127 natomiast pixel jak wiadomo składa się z 3 podstawowych kolorów RGB które to określają ostateczną barwę pixela i są z zakresu 0-255. Nie wiedzę najmniejszego sensu aby wartość poszczególnych składowych koloru porównywać z wartością kanału alpha. -------------------- Moja gra - scraby.io
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 10.04.2007 Skąd: znienacka. Ostrzeżenie: (0%)
|
Generalnie, to chcę załadować plik png, zamienić wszystkie pixele które nie są 100% przezroczyste na kolor niebieski, i zapisać to jako gif na serwerze.
Czy ktoś może mnie olśnić, jakiej funkcji użyć do sprawdzenia czy wartość alfa dla danego pixela jest równa 0? EDIT: Napisałem takie coś korzystając z drugiego przykładu http://pl.php.net/imagecolorat i przykładu #luq:
I wywala to całą stronę takich errorów: "Warning: Wrong parameter count for imagecolorsforindex() in /home/b/l/o/<cenzura Pomocy! Ten post edytował Flapper 5.04.2009, 21:09:07 |
|
|
|
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%)
|
Manual, manual, i jeszcze raz manual.
Źle używasz funkcji imagecolorsforindex(), powinieneś używać tak:
-------------------- Moja gra - scraby.io
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 10.04.2007 Skąd: znienacka. Ostrzeżenie: (0%)
|
Dzięki!
Jeszcze tylko 1 problem. Ostatecznie mam taki kod:
I daje to taki efekt: ![]() A chciałbym żeby wszystko poza tym niebieskim było przezroczyste, więc coś musiałem namieszać w kodzie, tylko co? EDIT:Ok problem rozwiązałem. Ten post edytował Flapper 5.04.2009, 23:06:22 |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.08.2025 - 03:27 |