最初にレンダリングを示します。それでも満足する場合は、読み続けてください:
ここで説明されている 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 チュートリアルに興味のある友人に役立つことを願っています。