![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
Witam
Mam problem z edycją/tworzeniem obrazów w Pa a mianowicie po wypełnieniu obrazu tłem i nałożeniu na niego innego obrazu wychodzą kwiatki. Screen: http://scr.hu/3k8r/zvgky (IMG:http://screenshu.com/static/uploads/temporary/j8/iv/d5/5g2jym.jpg) Kolor czarny + różowy to pierwszy obraz, a zielony to "podkład". To co chciałbym uzyskać to efekt po prawej stronie SS, a obecny po lewej. Jak widać kolory są rozmazane. Obrazki nie są poddawane żadnemu przekształceniu itp., nakładanie odbywa się przez imagecopy/imagecpymerge. Czy ktoś spotkał się z podobnym problemem i znalazł rozwiązanie ? Pozdrawiam |
|
|
|
Post
#2
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
Pozwól, że i ja wkleję obrazek:
(IMG:http://historia.focus.pl/upload/galleries/1/fot-corbis-archiwum-autora-1199_l.jpg) Mam nadzieję, że jesteś domyślny... |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
Po to się rozpisałem aby nekreślić problem bo kod jest banalny i spodziewałem się, odpowiedzi osób, które miały podobny problem na poziomie ogólnym( kolory w PHP ) a nie konkretnego kodu.
Ale skoro tak to proszę:
Ten post edytował IProSoft 29.05.2015, 18:48:17 |
|
|
|
Post
#4
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
HexToRGB, jest taka funkcja?
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
|
|
|
|
Post
#6
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
Nie widzę jej w manualu.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 6 809 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%)
|
IProSoft,
wrzuć gdzieś do pobrania image.jpg oraz wynik jaki otrzymujesz. Ten post edytował trueblue 29.05.2015, 19:46:55 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
Nie widzę jej w manualu. To własna funkcja, nieistotna dla przykładu. Obrazki: https://www.dropbox.com/sh/5cf18bjaz9liyer/...Q-bCDwLbPa?dl=0 Ten post edytował IProSoft 29.05.2015, 20:00:51 |
|
|
|
Post
#9
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
Chcesz dodać tylko tę zieloną ramkę?
http://zapodaj.net/737b42cd2cfed.png.html |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 6 809 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%)
|
Jak dla mnie jest to efekt kompresji JPEG, spróbuj generować w innym formacie i porównać wynik. |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
@Kshyhoo - sory za edycję, źle spojrzałem. Nie tyle ramkę co połaczyć dwa obrazki jednak wynik ma być w jpg
@trueblue - z png nie ma tego problemu, jednak zależy mi na działaniu tylko na plikach jpg Ten post edytował IProSoft 29.05.2015, 20:32:26 |
|
|
|
Post
#12
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
Wygeneruj zielony kwadrat a na niego nałóż swój obrazek...
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%)
|
Problem nie leży w imagecopy() a w imagejpeg(). W trakcie kompresji JPEG podczas transformacji koloru RGB na YCbCr stosowane jest próbkowanie 4:2:0 (rozdzielczość pionowa i pozioma Cr i Cb jest zmniejszana o połowę), gdyby było 4:4:4 (rozdzielczość bez zmian) to obraz byłby wyraźny, jednak produkowane są mniejsze pliki kosztem jakości. Przy próbkowaniu 4:2:2 tylko pionowe lub poziome (zależnie od stosowanej metody) krawędzie byłyby dobre.
|
|
|
|
Post
#15
|
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że |
Ale użyj ImageCopyResampled.
|
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
@Kshyhoo - to nic nie zmieni.
@kartin - dzięki za konkret, rozumiem, że nie ma obejścia tego w PHP ? |
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 6 809 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
Użycie Imagick niestety odpada, musiało by to być w domyślnej funkcji. Imagick nie jest dostepny wszędzie, tj na kazdym serwerze, a kod musi być uniwersalny.
|
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 246 Pomógł: 79 Dołączył: 25.05.2010 Ostrzeżenie: (0%)
|
Nic nie wiem, aby była możliwość obejścia tego w GD.
GD też jest opcjonalnym rozszerzeniem i możesz trafić na serwer bez obsługi. ImageMagick jest w miarę powszechny. Przed chwilą testowałem na 4 różnych hostingach i we wszystkich był. W Gmagick też jest dostępna możliwość ustawiania próbkowania. Zatem masz już dwa alternatywne rozszerzenia. Możesz zrobić sobie dodatkową warstwę abstrakcji dla używanych funkcji graficznych, a w niej korzystać z najlepszego dostępnego na danym serwerze rozwiązania. Ostatecznie możesz próbować generować do png lub bmp a później konwertować do jpeg, wywołaniem ze skryptu zewnętrznego programu. Ten post edytował kartin 29.05.2015, 23:20:24 |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 479 Pomógł: 97 Dołączył: 6.09.2011 Skąd: php.net :) Ostrzeżenie: (0%)
|
Przeszukałem, przeczytałem i doszedłem do tego samego wniosku :-)
GD jest raczej zawsze i nie spotkałem się z jego brakiem, jak np. bywało to z ImageMagick ale mimo wszystko wykonam dodatkowe klasy dla GD/ImageMagick z opcjami do zmian na obrazach. Dzięki za wszystkie odpowiedzi. |
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 18:25 |