devblog, portfolio

movie producer, zend framework, php, jquery pluginy



PHP: Skalowanie obrazków - biblioteka IMagick

skalowanie obrazkówJakiś czas temu pisałem o skalowaniu obrazków za pomocą biblioteki GD. Nie jest to jednak najlepszy sposób. Obrazki są dość niskiej jakości, kod długi, a cały proces - zasobożerny. Już najwyższy czas aby przedstawić prostszy, szybszy i skuteczniejszy sposób skalowania obrazków.

Do wykonania miniaturki wykorzystamy tutaj bibliotekę IMagick, która jest doinstalowywana do PHP na praktycznie każdym płatnym serwerze.

Zacznę od tego, że wymienię kilka zalet korzystania z biblioteki IMagick. Po pierwsze, posiada ona dużo większy zestaw funkcji, który pozwala na znaczne skrócenie kodu. Kolejną zaletą jest zachowanie większej ilości szczegółów na miniaturce. W bibliotece GD użycie większej skali kończyło się kompletną nieczytelnością stworzonego obrazka. Tu jest dużo, dużo lepiej. Kolejną zaletą jest liczba obsługiwanych przez IMagick formatów i to, że nie potrzebujemy do każdego z nich osobnego zestawu funkcji.

Teraz, kiedy już wiesz dlaczego IMagick jest lepszym rozwiązaniem, zabierzmy się za listing:

 

<?php
$path="http://kacperkolodziej.com/templates/default/images/logo.png"; //wymiary tego obrazka to: 240px na 136px
$photo=new Imagick($path);
$photo->ThumbnailImage(100,100,true); //skalujemy obrazek
$new_path=$_SERVER['DOCUMENT_ROOT'] . "/images/mniejszy.png";
$photo->writeImage($new_path); //zapisujemy obrazek
?>

 

I to wszystko. Objaśnię więc ten krótki fragment kodu.

Najpierw definiujemy zmienną $path. Przechowuje ona adres obrazka, z którego będziemy korzystać. Następnie tworzymy obiekt imagick. Jako argument przyjmowany jest adres pliku. Teraz używamy funkcji Imagick::ThumbnailImage() do zmniejszenia obrazka. Pierwszy parametr to maksymalna szerokość miniaturki, drugi to maksymalna jej wysokość, a trzeci (typ boolean) mówi o tym, czy mają zostać zachowane proporcje (wartość true), czy też nie (wartość false). Ostatnią czynnością będzie zapisanie obrazka. Można nadpisać oryginał, ale lepiej jest zapisać go w innej lokalizacji. My wybraliśmy tę drugą opcję, więc definiujemy ścieżkę do zapisu obrazka (zmienna $new_path) i zapisujemy za pomocą funkcji Imagick::writeImage(), która za argument przyjmuje ścieżkę do zapisu pliku.

Tyle wystarczyło, żeby osiągnąć cel z lepszym efektem niż to było w przypadku biblioteki GD.

Pozostaje mi tylko życzyć owocnej pracy z biblioteką IMagick :)

Paweł Lis Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12

Fajna sprawa, swego czasu miałem własną klasę właśnie na takie potrzeby. To jeszcze opisz jak doinstalować to u siebie na apache ;)

tk1 www Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

Rozszerzenie PHP Imagick dla Windows można zassać ze strony http://dev.freshsite.pl. Wersje Thread Safe i Non Thread Safe, kompilowane w VC6 i VC9. Czyli dla serwera każdego coś dobrego :-)

pozdrawiam
tk1

fut5al www Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Ubuntu/10.04 Chromium/8.0.552.224 Chrome/8.0.552.224 Safari/534.10

Dzięki! Tego właśnie szukałem :) Wszystko jasno opisane

Rafał Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6

no okej, wszystko pięknie ladnie tylko pytanie jak tego Imagick\\\\\\\\\\\\\\\'a na domowym hoście zainstalować? pobrałem całą paczkę(14MB) otwieram i wielkie zdziwienie co tam w ogole sie znajduje... nawet nie wiadomo za co sie zabrac bo plików tam jest od groma a jak przeczytalem to ta biblioteka jest juz na wiekszosci \\\\\\\"platnych serwerow\\\\\\\" właściwie zinstalowana i gotowa do użycia.
w razie chęci pomocy gdyby się ktos na to zdecydowal proszę o kontakt pod numerem Gadu-gadu: 9977031 lub ew. tutaj w komentarzu ;)
z gory serdecznie dziekuje,
pozdrawiam

Kacper Kołodziej www Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16

Jeśli masz Linuxa z rodziny Debiana, to w konsoli wpisujesz:

sudo apt-get install php5-imagick
- żadnej paczki wtedy nie potrzebujesz.
W przypadku instalacji w Windows, najprawdopodbniej znajdziesz w paczce plik readme, install, todo czy jakiś podobny. Tam wszystko powinno być napisane.
Jak szerzej napiszesz co konkretnie masz, to ja też napiszę konkretniejszą poradę :)

Dodaj komentarz »