> 백엔드 개발 > PHP 튜토리얼 > PHP는 imagick을 사용하여 결합된 썸네일을 생성합니다.

PHP는 imagick을 사용하여 결합된 썸네일을 생성합니다.

WBOY
풀어 주다: 2016-07-29 09:02:46
원래의
1110명이 탐색했습니다.

먼저 렌더링을 보여드리겠습니다. 그래도 만족스러우시다면 계속 읽어주세요.

PHP는 imagick을 사용하여 결합된 썸네일을 생성합니다.

여기서 언급된 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿