![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jak w temacie, chodzi mi o stworzenie skryptu dzieki ktoremu uzyskal bym przejscie między dwoma zdjęciami przy użyciu gd...
macie jakies pomysły ? jedyne co przychodzi mi do glowy to stopniowe nakladanie transparentu z jednej strony zdjecia do polowy, i tak przygotowane zdjecie nalozyc na kolejne. Kwestia jak to zrobic ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
GD niestety nie ma nic do zaoferowania sensownego by zrobić takie przejście płynne i, co tu dużo mówić ładnie oraz naturalnie wyglądające, trzeba się posiłkować niestety dość wolno działającymi skryptami, a do tego mało wydajnymi, bo liczenie jest dla każdego piksela obrazu. Sam kiedyś podobny filtr pisałem ale w Matlabie. To przypomina symulację nadawania przezroczystości dynamicznie. Jak działał?
1. Brałem dwa obrazy A i B o tej samej rozdzielczości (jeśli nie były - przeskalowywałem do identycznej) 2. W pętli po całej szerokości robiłem wzorek mniej więcej taki
Możesz owszem kombinować z nadawaniem obu obrazkom tylko poziomu alfa w pętli, ale kod nie różni się wiele od tego powyżej. Różnica leży bowiem tylko w tym jak piksele obrazu traktujesz. A efekt wcale lepszy nie jest. Tylko zwracaj uwagę na szerokość i wysokość, bo we wszystkich 3 muszą być identyczne. Jeśli nie będą, to musisz sam sobie przeskalować A, B i wynik by były! Wydajne to nie jest, ale niestety GD nie ma wsparcia dla nadawania w prosty sposób alfy konkretnemu pikselowi lub grupie pikseli i trzeba to samemu implementować poprzez manipulacją alfy dla każdego piksela z osobna lub poprzez cudowanie. Możesz ewentualnie jeden z obrazów użyć od razu jako wynikowy i to będzie jedyna optymalizacja w sumie. PS... Musisz uważać na zaokrąglenia dla wartości skrajnych. Jeśli trzeba będzie to daj zaokrąglenie w dół bo jest pewniejsze w tym wypadku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 23:56 |