[PHP+GD] Kopiowanie obrazka, zachowując przezroczystość

0

Witam, usiłuję wygenerować obrazek za pomocą biblioteki GD. Ma on zawierać prostokąt z zaokrąglonymi rogami. Z prawej i lewej strony wklejane są przygotowane wcześniej obrazki, natomiast w środku rozciągany jest trzeci. I wszystko byłoby dobrze, gdyby nie to, że na rogach używam przezroczystości (są to obrazki PNG z kanałem alpha). Oczywiście chodzi o to, żeby przekopiować do obrazka docelowego obrazek razem z przezroczystością, a nie "zblendować" je razem. Niestety, szukam już trochę, i nie mogę znaleźć działającego rozwiązania. Próbowałem już różnych rzeczy, włączając w to imagecopymerge(), imagealphablending(), imagelayereffect() i inne. Czy ktoś może miał kiedyś do czynienia z podobną sytuacją i wybrnął z niej jakoś?

0

Wydaje sie, ze stworzenie nowego obrazka calego przezroczystego powinno zalatwic sprawe (
imagealphablending, imagecolorallocatealpha i imagefill i imagesavealpha). Potem namalowac z przezroczystoscia.

0

Dzięki, udało się :). Okazuje się, że miałem to wszystko, łącznie z imageallocate...() i imagefill(), ale najwidoczniej w złej kolejności ;).

0

Ja też mam ten problem chciałbym aby ktoś to ładnie przedstawił nie jestem profesjonalistą ale noobkiem też nie prosze o odpowiedź
Przynajmniej jakie wartości użyć w tych funkcjach manual nie pomaga mi :/

0

Również odgrzeję wątek. Może kolega umieści kod, jak sobie poradził?

0

Przeszukałem całe forum, również ten wątek czytałem. Niestety, dalej mam problem. Oto kod cięcia (bez wcześniejszego działającego obracania):

$tne1 = imagecreatetruecolor(76, 282);
imagealphablending($tne1, false);
imagecolorallocatealpha($tne1, 0, 0, 0, 127);
$black = imagecolorallocate($tne1, 0, 0, 0);
imagefill($tne1, 0, 0, $black);
imagesavealpha($tne1, true);

I jego efekty:

  1. Obrazek oryginalny.
  2. Obrazek po pierwszym obrocie.
  3. Obrazek po pierwszym cięciu.
  4. user image 2. user image 3. user image
0

Bo to co bylo to przezroczystosc a ty masz wiecej kanalow alpha dla kolorow i tu trzeba pokombinowac.

Uproszczenie jakie bylo stosowane w poprzednim poscie to:

1 kanal z alpha ustawionym na przezroczysty, reszta pelen

w tym przypadku dla roznych pixeli rozny kanal alpha.

1 użytkowników online, w tym zalogowanych: 0, gości: 1