src_img = $img; $this->src_w = imagesx($img); $this->src_h = imagesy($img); $this->dst_w = $dstWidth; $this->dst_h = $dstHeight; } public function __destruct() { if (is_resource($this->dst_img)) { imagedestroy($this->dst_img); } } public function display() { header("Content-type: image/png"); imagepng($this->dst_img); return $this; } public function reset() { if (is_resource(($this->dst_img))) { imagedestroy($this->dst_img); } $this->dst_img = imagecreatetruecolor($this->dst_w, $this->dst_h); imagecopy($this->dst_img, $this->src_img, 0, 0, 0, 0, $this->dst_w, $this->dst_h); return $this; } public function size($dstWidth, $dstHeight) { $this->dst_w = $dstWidth; $this->dst_h = $dstHeight; return $this->reset(); } public function crop() { $this->reset(); $mask = imagecreatetruecolor($this->dst_w, $this->dst_h); $maskTransparent = imagecolorallocate($mask, 255, 0, 255); imagecolortransparent($mask, $maskTransparent); imagefilledellipse($mask, $this->dst_w / 2, $this->dst_h / 2, $this->dst_w, $this->dst_h, $maskTransparent); imagecopymerge($this->dst_img, $mask, 0, 0, 0, 0, $this->dst_w, $this->dst_h, 100); $dstTransparent = imagecolorallocate($this->dst_img, 255, 0, 255); imagefill($this->dst_img, 0, 0, $dstTransparent); imagefill($this->dst_img, $this->dst_w - 1, 0, $dstTransparent); imagefill($this->dst_img, 0, $this->dst_h - 1, $dstTransparent); imagefill($this->dst_img, $this->dst_w - 1, $this->dst_h - 1, $dstTransparent); imagecolortransparent($this->dst_img, $dstTransparent); return $this; } } if(isset($_GET['path'])) { $path = $_GET["path"]; $image = imagecreatefromjpeg($path); $width = imagesx($image); $height = imagesy($image); $crop = new CircleCrop($image,$width,$height); $crop->crop()->display(); } ?>