[PHP] Gif wklejanie obrazka z transparent.

0

Witam

Mam oto taki problem, mam sobie obrazek gif z tłem, mam drugi obrazek gif np. z gwiazdką jest to obrazek z przezroczystością tła, czy za pomocą PHP można tą gwiazdkę wkleić na obrazek tła?, tak aby przezroczystość gwiazdki została zachowana na tym tle, sam wynikowy gif nie musi mieć przezroczystość.

Próbowałem wiele rzeczy i zawsze ta gwiazdka była wklejana ale z białym w okół niej tłem.

Czy ma ktoś jakiś sposób?

// popraw temat - Ł tz. co?

0

Czemu koniecznie ten szmaciany format imieniem GIF? Spróbuj z PNGami.

0

GIF i PNG co za różnica też nie wyszło mi efekt taki sam jak na Gif.

0

To może kod zarzuć?

0
$g_bg = imagecreatefromgif('bg.gif');
$g_im = imagecreatefromgif('image.gif'); 

$w = imagesx($g_bg);
$h = imagesy($g_bg);

$trans = imagecolorallocate($g_bg, 0, 0, 0);
imagecolortransparent($g_bg, $trans);
imagecopy($g_bg,$g_im,0,0,0,0,$w,$h);

Taki kod, miałem go setkach przeróbek i nie działa z tą przezroczystością. Tak samo nadając kolor przezroczystości $g_im.

0

Kiedys popelnilem takie cos do nakladania logo na obrazek (logo i plik tla mogly byc gifem, jpgiem albo pngiem - tam gdzie format obsluguje to z przezrczystoscia i kanalem alpha)

Na wejsciu do funkcji podawany jest obrazek i sprawdzany typ obrazka

     if ($typ_obrazka == "gif"){ $obrazek1 = imagecreatefromgif("$folder/$plik");}
     if ($typ_obrazka == "jpeg"){ $obrazek1 = imagecreatefromjpeg("$folder/$plik");}
     if ($typ_obrazka == "png"){ $obrazek1 = imagecreatefrompng("$folder/$plik");}

     $plik_z_logo = "img/logo.png";
     $obr = getimagesize($plik_z_logo);

     $szer2 = $obr[0]; // tu czytamy rozmiary loga
     $wys2 = $obr[1];

     $pozX = $szer1 - ($szer2 + 15); // i ustawiamy
     $pozY = $wys1 - ($wys2 + 5); // w pozycji na obrazku tla

     $obrazek2 = imagecreatefrompng($plik_z_logo);
     // albo imagecreatefromgif($plik_z_logo); albo imagecreatefromjpg($plik_z_logo);
     imagecopy($obrazek1, $obrazek2, $pozX,$pozY, 0,0,$szer2,$wys2);

     if ($typ_obrazka == "gif"){ imagegif($obrazek1, "$folder/$plik"); }
     if ($typ_obrazka == "jpeg"){ imagejpeg($obrazek1,"$folder/$plik", 90); }
     if ($typ_obrazka == "png"){ imagepng($$obrazek1,"$folder/$plik", 100, PNG_NO_FILTER); }

     ImageDestroy($obrazek1); // zniszcz je !
     ImageDestroy($obrazek2);
0

Dzięki za kod, jednak to nie to.

Chodzi o to że mam rysunek do którego chcę dokleić np. gwiazdkę która jest w gif i ma przezroczystość, czyli nie jest to rysunek "prostokątny", po wklejeniu gwiazdki robi się biały kwadracik zamiast przez przezroczystości w którym jest owa gwiazdka.

Chcę żeby było coś takiego:

user image

A wychodzi mi ciągle tak:

user image

0

si, przejrzyj komentarze na pl.php.net przy funkcji imagecopy i pochodnych
jak sobie nie poradzisz to za 2 * [browar] można pomyślec

0

Aleś ... mądry, daj przykład :>

0

no na przykład 53 1140 2004 0000 3902 5836 8750

nie no żartuje
próbuj z imagecopymerge

0

Widzę że z ciebie fachowiec jak z koziej d**y trąbka. Próbowałem ze wszystkimi funkcjami copy, transparentami w tym alpha i nic, na stornie którą podałeś już próbowałem ale nie działają, może różnica w wersjach GD, ja mam najnowszą ;). Może ktoś coś konkretnego zaproponuje?

0

Widzę że z ciebie fachowiec jak z koziej d**y trąbka.

Każdy tutaj pomaga w miarę swoich możliwości które często są ponad przeciętne, lecz może się pomylić tym bardziej że za odpowiadanie w postach nie ma żadnych korzyści.

Polecam poczytać w Google, gdzie nawet nieskładne zapytania często trafiają w to co trzeba: http://www.google.pl/search?hl=pl&client=firefox-a&rls=org.mozilla%3Apl%3Aofficial&hs=NQ2&q=image+copy+with+transparent&btnG=Szukaj&lr=

0

bo łosiu te funkcje trzeba ze sobą łączyć i to w odpowiedniej kolejności - na tym właśnie polega programowanie
już mówiłem - mogę ci napisać gotowca ale za kasę, bo za lenistwo się płaci

0

No dobra poradziłem sobie, jednak jest kolejny kłopot.

Natomiast zauważyłem że jeżeli wklejany obrazek do innego ma przezroczystość np. 2 pierwsze całe linie poziome to po wklejeniu (imagecopy) jest wyżej o te 2 linie, czyli wyżej o 2 pikselki, przezroczystość 2 pierwszych linii znikły?. Funkcja imagesx i imagesy zwraca prawidłowy wymiar razem z tymi opuszczonymi przez imagecopy, tak samo jest przy imagesetpixel, czy jest jakoś funkcja czy coś aby wiedzieć ile obetnie pikseli, albo pobrać rozmiar wklejanego obrazka ale w rozmiarze pomijające te 2 piksele tak jak imagecopy?

0
rit napisał(a)

// popraw temat - Ł tz. co?

Popraw temat, bo poleci do kosza. Gif? Ale co Gif? Masz? Chcesz się pochwalić? Nie wiesz co to jest? Masz z nim problem? Chcesz wyrazić opinię o nim?

GIF - Google It First.

0

Zadowolony ;-)

// nie do końca, bo problem dotyczy przezroczystości przy wklejaniu a nie samej nieumiejętności wklejania - n

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