먼저 렌더링을 보여드리겠습니다. 그래도 만족스러우시다면 계속 읽어주세요.
여기서 언급된 imagick은 PHP의 ImageMagick의 확장입니다. 단 하나의 명령으로 pecl을 사용하여 쉽게 설치할 수 있습니다.
코드 복사 코드는 다음과 같습니다.
sudo pecl install imagick
(확장 기능을 설치한 후에도 php.ini에 Extension=imagick.so를 추가해야 합니다. 그런 다음 Apache 또는 php-fpm을 다시 시작해야 합니다. service.)
최근 썸네일을 생성하기 위해 여러 장의 사진을 결합해야 할 필요성이 생겼는데, 우연히 이 강력한 imagick 확장 프로그램을 사용하게 되었습니다.
다음과 같은 썸네일을 생성해야 합니다.
1. 사진이 1개 있으면 해당 사진의 썸네일을 직접 생성합니다.
2. 2개의 사진이 왼쪽에 1개, 오른쪽에 1개씩,
3. 3개의 사진이 있는 경우 두 사진의 왼쪽이 균등하게 분배됩니다.
4. 사진이 4장이면 필드 그리드처럼 공간을 균등하게 할당하세요.
5. 처음 4장의 사진을 필드에 따라 나눕니다. 문자 형식으로 썸네일을 생성합니다.
몇 가지 규칙이 있지만 너무 복잡하지는 않습니다. 빠르게 알아냈습니다.
namespace \clarence\thumbnail; class Thumbnail extends \Imagick { /** * @param array $images * @param int $width * @param int $height * @return static * @throws ThumbnailException */ public static function createFromImages($images, $width, $height){ if (empty($images)){ throw new ThumbnailException("No images!"); } $thumbnail = new static(); $thumbnail->newImage($width, $height, 'white', 'jpg'); $thumbnail->compositeImages($images); return $thumbnail; } public function compositeImages($images){ $imagesKeys = array_keys($images); $compositeConfig = $this->calcCompositeImagesPosAndSize($images); foreach ($compositeConfig as $index => $cfg){ $imgKey = $imagesKeys[$index]; $img = new \Imagick($images[$imgKey]); $img = $this->makeCompositeThumbnail($img, $cfg); $this->compositeImage($img, self::COMPOSITE_OVER, $cfg['to']['x'], $cfg['to']['y']); } } protected function makeCompositeThumbnail(\Imagick $img, $cfg){ $img->cropThumbnailImage($cfg['size']['width'], $cfg['size']['height']); return $img; } protected function calcCompositeImagesPosAndSize($images){ $width = $this->getImageWidth(); $height = $this->getImageHeight(); switch(count($images)){ case 0: throw new ThumbnailException("No images!"); case 1: // | 0 | return [ 0 => [ 'to' => [ 'x' => 0, 'y' => 0 ], 'size' => [ 'width' => $width, 'height' => $height, ] ] ]; case 2: // | 0 | 1 | return [ 0 => [ 'to' => [ 'x' => 0, 'y' => 0 ], 'size' => [ 'width' => $width / 2, 'height' => $height, ] ], 1 => [ 'to' => [ 'x' => $width / 2, 'y' => 0], 'size' => [ 'width' => $width / 2, 'height' => $height, ] ] ]; case 3: // | 0 | 1 | // | 2 | | return [ 0 => [ 'to' => [ 'x' => 0, 'y' => 0 ], 'size' => [ 'width' => $width / 2, 'height' => $height / 2, ] ], 1 => [ 'to' => [ 'x' => $width / 2, 'y' => 0], 'size' => [ 'width' => $width / 2, 'height' => $height, ] ], 2 => [ 'to' => [ 'x' => 0, 'y' => $height / 2 ], 'size' => [ 'width' => $width / 2, 'height' => $height / 2, ] ], ]; default: // >= 4: // | 0 | 1 | // | 2 | 3 | return [ 0 => [ 'to' => [ 'x' => 0, 'y' => 0 ], 'size' => [ 'width' => $width / 2, 'height' => $height / 2, ] ], 1 => [ 'to' => [ 'x' => $width / 2, 'y' => 0], 'size' => [ 'width' => $width / 2, 'height' => $height / 2, ] ], 2 => [ 'to' => [ 'x' => 0, 'y' => $height / 2 ], 'size' => [ 'width' => $width / 2, 'height' => $height / 2, ] ], 3 => [ 'to' => [ 'x' => $width / 2, 'y' => $height / 2], 'size' => [ 'width' => $width / 2, 'height' => $height / 2, ] ], ]; } } }
사용해 보세요.
코드 복사 코드는 다음과 같습니다.
$thumbnail = clarencethumbnailThumbnail::createFromImages($srcImages, 240 , 320);
$thumbnail->writeImage($outputDir."/example.jpg");
위 콘텐츠에서는 imagick을 사용하여 결합된 썸네일을 생성하는 PHP를 소개합니다. 관련된 지식이 모두에게 도움이 되었으면 좋겠습니다!
위 내용은 콘텐츠 측면을 포함하여 결합된 썸네일을 생성하기 위해 PHP에서 imagick을 사용하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.