Cze
6
2013
6
2013
Łączenie obrazów PNG + kanał przezroczystości = PHP + ImageMagick
Każdy kto bawił się do tej pory obrazami zapisanymi w formacie PNG 24bit z kanałem przezroczystości zrozumiał, że nie jest to takie łatwe jakby się mogło wydawać :) Przyczyną tego jest kanał alpha. Sama bibliotek GD wspomaga obróbkę PNG z przezroczystością, lecz niestety nie działa tak jak powinna przy ich łączeniu (spłaszczaniu) pomiędzy sobą. Rozwiązaniem jest użycie biblioteki ImageMagick dla PHP przez API imagick.
Opis
- Łączenie dwóch plików PNG z kanałem przezroczystości.
- Ustawienie tła na białe – usuwamy przezroczystość dla zapisu do JPG.
- Spłaszczenie warstw/obrazu.
- Ustawienie formatu pliku na JPG.
- Zapis lub wyświetlenie pliku.
Fragment kodu
Dla przykładu posłużą nam dwa pliki PNG, obydwa z kanałami przezroczystości.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$img1 = new Imagick( 'ico_png.png' ); // tworzenie obiektu Imagick $img2 = new Imagick( 'magician.png' ); // tworzenie obiektu Imagick $img1->compositeImage( $img2, imagick::COMPOSITE_DEFAULT, 0, 0 ); // nakładanie jednego obrazu na drugi z możliwością konfiguracji komponowania warstw $img1->setImageBackgroundColor('white'); // ustawienie koloru tła $img_wynik = $img1->flattenImages(); // spłaszczenie łączonych plików w jedną warstwę $img_wynik->setImageFormat('jpg'); // konwertowanie do formatu JPG $img_wynik->writeImage( 'png_imagemagick.jpg' ); // zapis do pliku header('Content-type: image/jpeg'); // nagłówek dla wyświetlenia w przeglądarce echo $img_wynik; // wyświetlenie obrazu |
Wynik
Plik zapisany do JPG.
Dodatkowe informacje
- Łączenie plików PNG z kanałem alpha przydaje się szczególnie przy kolorowaniu poszczególnych fragmentów ostatecznego obrazu. Składasz kilka plików w jeden. Konkretny przykład opiszę w kolejnym tutorialu.
- Przydatne strony:
» Strona domowa projektu ImageMagick
» Manual
» Tutorial
» Tworzenie napisu + anti-aliasing
Podobne tematy
Dodaj komentarz
O mnie
Najnowsze wpisy
- Drzewo kategorii – budowa struktury od dołu do góry
- PHPExcel – export + import pliku XLS
- WordPress + Polylang – Tworzenie klasy CSS z ID strony/wpisu w wybranym języku
- Mailing – Poprawna konstrukcja szablonu maila HTML/CSS i prawidłowy wygląd w programie pocztowym
- Szukasz programisty PHP dla e-commerce?