class Application_Model_PhotoFile { private $path; private $image; /** * Konstruktor jako arametr przyjmuje ścieżkę do pliku ze zdjęciem * @param (String) ścieżka * */ public function __construct($path){ $this->path = $path; $this->image = new Imagick($path); } /** * Ogranicza obrazek do podanych w tablicy wymiarów * @param array('width', 'height') * */ public function setMaxSize($param){ return null; } // obliczam proporcje $proporcje['x'] = $param['width'] / $this->image->getImageWidth(); } $proporcje['y'] = $param['height'] / $this->image->getImageHeight(); } // wyszukuję najmniejszą proporcję // podano wysokość i szerokość if($proporcje['x']>$proporcje['y']){ $mnoznik = $proporcje['y']; }else{ $mnoznik = $proporcje['x']; } }else{ // podano wysokość lub szerokość $mnoznik = $proporcje['x']; }else{ $mnoznik = $proporcje['y']; } } // czy docelowy rozmiar będzie mniejszy od obecnego (jeżeli <1 to tak) if($mnoznik<1){ $this->image->setResolution($nowa_szerokosc, $nowa_wysokosc); $this->image->writeImage('./img/c.jpg'); } } }
Wywołują ją w taki sposób:
$photo = new Application_Model_PhotoFile('./img/a.jpg');
Niestety rozdzielczość obrazka nie jest zmieniana
