private function resizeCropImg($pFolder, $pImg, $pW, $pH) { $im = new imagick(); $im->readImage($pFolder . $pImg); $image = new stdClass(); $image->dimensions = $im->getImageGeometry(); $image->w = $image->dimensions['width']; $image->h = $image->dimensions['height']; $image->ratio = $image->w / $image->h; if ($image->w / $pW < $image->h / $pH) { $h = ceil($pH * $image->w / $pW); $y = ($image->h - $pH * $image->w / $pW) / 2; $im->cropImage($image->w, $h, 0, $y); } else { $w = ceil($pW * $image->h / $pH); $x = ($image->w - $pW * $image->h / $pH) / 2; $im->cropImage($w, $image->h, $x, 0); } $im->ThumbnailImage($pW, $pH, true); if ($img->type === "PNG") { $im->setImageCompressionQuality(55); $im->setImageFormat('png'); } elseif ($img->type === "JPG" || $img->type === "JPEG") { $im->setCompressionQuality(100); $im->setImageFormat("jpg"); } $im->writeImage($this->ad->url->folder . '/assets/' . $pImg); $im->destroy(); }