Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcje graficzne
Forum PHP.pl > Forum > PHP
Visjusz
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;
wookieb
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ć.
nmts
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.
Fantazyn
Może użycie ImageMagick coś Ci pomoże.

Sprawdź ten przykład : overlap w ImageMagick.

Pozdrawiam.
thek
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.