Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcje graficzne
Visjusz
post 14.10.2009, 19:56:33
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 14.10.2009

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


Witam, mój problem jest dość prosty jeżeli chodzi o inne języki programowania (AS czy VB), aczkolwiek zmuszony jestem do rozwiązania problemu w PHP.

Chodzi tu głównie o wypełnienie koła obrazkiem... funkcja imagefilledarc wypełnia okrąg podanym kolorem... a ja chciałbym go wypełnić obrazkiem (kwadratowym -> avatar), a resztę po za obwodem koła zrobić przeźroczystą. Można to zrobić na piechotę, określając pole koła i zmieniając kolor każdego pixel'a po za jego obwodem, ale wierze że jest inny sposób na to. Z góry dzięki;
Go to the top of the page
+Quote Post
wookieb
post 14.10.2009, 21:01:43
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Sorry mój błąd. Obawiam się że trzeba będzie zrobić tak (ale głowy nie daje).
Wypełniasz przezroczystością, a potem białym kolorem. Tam gdzie jest białe miejsce pobierasz odpowiedni pixel z obrazka. Ale musiałbym się jeszcze głębiej zastanowić.

Ten post edytował wookieb 14.10.2009, 21:08:08


--------------------
Go to the top of the page
+Quote Post
nmts
post 15.10.2009, 10:24:04
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Wpadłem na pewien pomysł.
Robisz na kwadracie okrąg, który będzie obramowaniem koła, a następnie za pomocą pętli robisz kolejne okręgi większe od poprzedniego, które będą wypełnione przezroczystością, która w tym wypadku działa jak gumka. Jedynym problemem jest to, że ta przezroczystość jest robiona z konkretnego koloru, który trzeba zdefiniować, i jeśli ten kolor występuje w środku koła to też zrobi nich przezroczystość, ale myślę, że da się ominąć nakładając na obrazek niewidoczną dla oka warstwę minimalnie ściemniającą kwadrat, dzięki temu będzie można do przezroczystości użyć np. 255,255,255.


--------------------
Free Web Tools - narzędzia dla programistów, webdeveloperów i specjalistów seo...
Go to the top of the page
+Quote Post
Fantazyn
post 15.10.2009, 11:45:31
Post #4





Grupa: Zarejestrowani
Postów: 135
Pomógł: 38
Dołączył: 24.02.2007
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Może użycie ImageMagick coś Ci pomoże.

Sprawdź ten przykład : overlap w ImageMagick.

Pozdrawiam.


--------------------
Go to the top of the page
+Quote Post
thek
post 15.10.2009, 21:13:16
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Zrób sobie plik maski z wybranym przez siebie kształtem (kółko, prostokąt, wielokąt), który jest przezroczysty i potem nakładaj go na obrazek.Tylko pamiętaj o ustawieniu przezroczystości. Ja dziś się nieco z tym bawiłem, ale problem był z jednym. Właśnie ową przezroczystością. Jeśli wczytałeś plik maski z przezroczystością już to było OK. Gorzej gdy maskę tworzyłeś "w locie". Funkcje nakładające obrazek na obrazek mają z tym problem. W GD bowiem ustalasz domyślnie kolor w trybie RGB, ale możesz też jako RGBa. Tymczasem nakładając maskę utworzoną "w locie" widziało ją nie jako RGBa ale zwykłe RGB, kanał alpha olewając :/ Niezależnie jakiej używałem kombinacji imagesavealpha i imagealphablending na obu plikach. Wyjściem chyba pozostaje tworzenie pliku maski, zapis na serwerze i potem wczytanie go oraz nałożenie. No chyba, że ja coś przy tworzeniu owej przezroczystości w masce się rypałem winksmiley.jpg


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 15:47