2011-11-04 23 views
10

Czekam na wyśrodkowanie plonu i obrazu za pomocą Imagick PHP apis (nie wersja wiersza poleceń Imagick).Wyśrodkuj plon za pomocą grawitacji przy użyciu Imagick i PHP

Zasadniczo chcę zrobić to, co jest możliwe za pomocą wiersza poleceń, za pomocą interfejsu API. Oto przykład z linii poleceń: http://www.imagemagick.org/Usage/crop/#crop_gravity

Oto, co robię (nie działa). Zawsze przycina górny lewy róg źródła:

 $this->imagickObj->setGravity(\Imagick::GRAVITY_CENTER); 
     $this->imagickObj->cropImage(300,250,0,0); 
     $this->imagickObj->setImagePage(0, 0, 0, 0); 

Dlaczego setGravity nie stosuje się do obrazu przed kadrowaniem? http://www.php.net/manual/en/function.imagick-setgravity.php mówi, że powinno to dotyczyć obiektu (w tym przypadku pojedynczego obrazu) ...

Odpowiedz

0

Trzeci i trzeci argument metody Imagemagick obiektu cropImage() definiują lewy górny róg uprawy. Albo spróbuj przekazać je jako null (i użyj metody setGravity()), albo możesz faktycznie obliczyć miejsce, w którym ma się odbyć uprawa i wprowadzić te liczby do metody cropImage() (i nie przejmuj się setGravity()).

Za to, co jest warte, wykonałem wiele kodowania wokół Imagemagick przy użyciu PHP, a ze względu na okropną dokumentację rozszerzenia Imagemagick, uciekłem się do wykonywania mnóstwa ładnych wywołań linii poleceń.

+0

dzięki. null, null nie działa. Potrafię wykonać obliczenia matematyczne, ale wolałbym wykorzystać wbudowany mechanizm, jeśli to możliwe. Chcę uniknąć przechodzenia do interfejsu CLI z kilku powodów, z których jednym jest wydajność (piszę usługę manipulacji obrazami, która będzie używana dość ciężko). – rynop

+0

Główna usługa, którą napisałem, używa CLI, przetwarza kilka tysięcy obrazów dziennie bez czkawki i działa na systemie Linux na procesorze Intel Core i5 760 z 4 GB pamięci RAM, który obsługuje również kilka witryn internetowych. – Crontab

+0

dzięki. Postanowiłem po prostu zrobić matematykę, ponieważ zajęło to tylko kilka minut. Pozostawię to pytanie otwarte przez kilka dni, aby sprawdzić, czy ktoś wie o sposobie wykorzystania wbudowanej grawitacji. – rynop

12

będzie za późno dla oryginalnego osobę, która zadała pytanie, ale dla przyszłych gości, prawidłowe rozwiązanie jest

bool Imagick::cropThumbnailImage (int $width , int $height)

Przepraszamy za późną odpowiedź, ale ja też utknąłem tutaj zaledwie 30 minut temu i pierwszy wynik Google przekierował mnie tutaj. Nadzieja, że ​​to samo nie stanie się z innymi.

+0

czy to zawsze oznacza wycinek? co jeśli chcę zmienić grawitację? – rynop

+0

Tak, zawsze przycina się środkiem ciężkości. W rzeczywistości najpierw skaluje obraz, aby dopasować wysokość lub szerokość, a następnie przycinał od środka, aby utworzyć miniaturę dowolnego obrazu. Jest to ta sama logika używana przez FB, Twitter, Google i wiele innych witryn do tworzenia miniatur. Jeśli chcesz zmienić grawitację, użyj 'bool Imagick :: cropImage (int $ szerokość, int $ wysokość, int $ x, int $ y)' jak zdefiniowano na http://php.net/manual/en/imagick. cropimage.php –

Powiązane problemy