ホームページ > バックエンド開発 > PHPチュートリアル > PHP は imagick を使用して結合されたサムネイルを生成します

PHP は imagick を使用して結合されたサムネイルを生成します

WBOY
リリース: 2016-07-29 09:02:46
オリジナル
1112 人が閲覧しました

最初にレンダリングを示します。それでも満足する場合は、読み続けてください:

PHP は imagick を使用して結合されたサムネイルを生成します

ここで説明されている imagick は、PHP での ImageMagick の拡張機能です。 pecl を使用したインストールは、たった 1 つのコマンドで簡単かつシンプルです:

コードをコピーします コードは次のとおりです:


sudo pecl install imagick

(php.ini に追加する必要があります)拡張機能のインストール後) extension=imagick.so に移動し、Apache または php-fpm サービスを忘れずに再起動してください。)

最近、複数の写真を結合してサムネイルを生成する必要があり、これを使用したいだけです強力な imagik 拡張機能。

この要件は、次のようにサムネイルを生成することです:

1. 写真が 1 つある場合は、この写真のサムネイルを直接生成します。

2. 写真が 2 つある場合は、左側に 1 つ、右側に 1 つです。 、それぞれ半分です

3. 写真が 3 枚ある場合は、2 つの写真の左側が均等に配置され、1 つは右側に配置されます。

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");


上記の内容は、PHP が imagick を使用して生成する方法を紹介しています。組み合わせ これがサムネイルに関する関連知識を皆さんに提供するのに役立つことを願っています。

上記では、コンテンツの側面を含め、PHP で imagick を使用して結合サムネイルを生成する方法を紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート