国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

? ??? ?? PHP ???? PHP下使用強(qiáng)大的imagick輕巧生成組合縮略圖

PHP下使用強(qiáng)大的imagick輕巧生成組合縮略圖

Jun 13, 2016 pm 12:28 PM
gt height thumbnail width

PHP下使用強(qiáng)大的imagick輕松生成組合縮略圖

project: blogtarget: use-imagick-to-composite-images-thumbnail.mddate: 2016-02-19status: publishtags:    - php    - imagick    - thumbnailcategories:    - php

這里說(shuō)的imagickImageMagick 在PHP下的擴(kuò)展。使用pecl安裝起來(lái)那叫一個(gè)輕松簡(jiǎn)單 —— 一條命令就搞定:

sudo pecl install imagick

(擴(kuò)展裝好后還是要在php.ini中加上extension=imagick.so,然后記得重啟apachephp-fpm服務(wù)。)

最近有個(gè)需求是要把多張圖片組合起來(lái)生成縮略圖,剛好用用這個(gè)強(qiáng)大的imagick擴(kuò)展。
這個(gè)需求是要這樣生成縮略圖:

  1. 如果有1張圖片,就直接生成這張圖片的縮略圖;
  2. 如果有2張圖片,則一張?jiān)谧筮呉粡堅(jiān)谟疫?,各一半?/li>
  3. 如果有3張圖片,則兩張左邊平均分配,一張獨(dú)占右邊;
  4. 如果有4張圖片,則像田字格一樣平均分配空間;
  5. 更多張圖片,則只取前4張,按田字格方式生成縮略圖。

這規(guī)則還真不少,不過(guò)還不算太過(guò)復(fù)雜,很快搞出來(lái)了:

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,                        ]                    ],                ];        }    }}

用個(gè)試試:

$thumbnail = \clarence\thumbnail\Thumbnail::createFromImages($srcImages, 240, 320);$thumbnail->writeImage($outputDir."/example.jpg");

效果立馬出來(lái)了:

贊一個(gè)~

(詳細(xì)代碼見 http://github.com/clarence-pan/thumbnail)

? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
??? GT3 Pro? GT4? ???? ?????? ??? GT3 Pro? GT4? ???? ?????? Dec 29, 2023 pm 02:27 PM

?? ????? ??? ??? ??? ? Huawei ???? ???? ???. ? ? Huawei GT3pro? GT4? ?? ?? ?? ?????. ? ??? ???? ????? ???? ????. Huawei GT3pro? GT4? ???? ?????? 1. ?? GT4: 46mm? 41mm, ??? ?? ?? + ????? ?? ?? + ???? ?? ?? ????. GT3pro: 46.6mm ? 42.9mm, ??? ???? ?? + ??? ??/??? ?? + ??? ? ????. 2. ??? GT4: ?? Huawei Truseen5.5+ ????? ???? ??? ? ??????. GT3pro: ECG ???, ?? ? ??? ??

???? ?? ?????? ???? ?? ?????? Jan 25, 2021 am 11:23 AM

???? ?? ?????. ???? ???? ?? ???? ???? ?? ???? ??? ?????. ? ??? ???? ?? ??? ??? ?? ??? ???? ??? ??? ??? ???? ???? ???? ?????. ?, ???? ??? ? ? ? ??? ?? ???? ?????.

??: Windows 11?? ?? ??? ???? ?? ??: Windows 11?? ?? ??? ???? ?? Aug 24, 2023 am 09:48 AM

Windows 11?? ?? ??? ???? ?? ?? ??? ?? ??? ???? ??? ???? ?? ? ??? ? ? ????. ?? ??? ??? ???? ?? ?? ??? ??? ????. ?? ???? ?? ????. ??? ?? ?? ??? ??? ????. ??? ?? ????: ?? ??? ?? ? ???? ?? ?? ????? ????? ? ????. ??? ??? ????: ???? ?? ????? ?? ??? ??? ? ????. ?? ?? ????? ??: ?? ?? ?? ?? ????? ?? ??? ??? ? ????. ???? ???????. ????? ???? ? ??? ?? ? ??? ??? ? ????. ? ??? ???? ????? ???? ??? ?? ??? ???? ????. 1. Windows ? Microsoft Store ? ????

html? ??? ??? ?????? html? ??? ??? ?????? Jun 03, 2021 pm 02:15 PM

HTML5?? ??? ??? ?????. ?? ??? ??? ?? ??? ?? ??, ??? ? ?? ??? ??? ? ????. ??.

iPhone?? App Store ??? ??? ? ?? ??? ???? ?? iPhone?? App Store ??? ??? ? ?? ??? ???? ?? Jul 29, 2023 am 08:22 AM

1?: ?? ?? ?? ?? Apple ??? ?? ??: ??? ???? ???? ?? ?? ???? ??? ?????. ??? ??? ??? ?? ?? ?? ?? ????. Apple ??? ????? ?? ????. Apple? ??? ?? ???? ???? AppStore? ??? ????? ?????. ??? ?? ?? Apple? ??? ????? ???? ?????. ??? ?? ??: "AppStore? ??? ? ??" ??? ??? ?? ???? ?? ??? ? ???? ??? ??? ????? ??????. Wi-Fi? ??? ??? ?? ????? ???? ??? ???? ???(?? > ??? > ???? ?? ??? > ??). iOS ??? ???????.

php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出,該如何解決 php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出,該如何解決 Jun 13, 2016 am 10:23 AM

php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出而不是在空白頁(yè)彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁(yè)彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code

iPadOS 17.4? iPad ??? ??? ????? ?? iPadOS 17.4? iPad ??? ??? ????? ?? Mar 21, 2024 pm 10:31 PM

iPadOS 17.4? iPad ??? ??? ????? ?? ??? ?? ??? ??? ?? ??? ???? iPad? ?? ????. iPad? ???? ?? ?? ????? ?????? ???? ???. iPadOS 17.4?? ??? ?? ??? ?? ??? ? ?? ?? ?? ??? ?? ??? ????. ? ?? ???? ??? ??? ??? ???? ?? ??? iPad ?? ??? ??? ???? ??? ??? ???? ??? ???? ??? ??? ? ???? ??? ? ??? ?? ????. ??? ??? ??? ?????? ??? ??? ?? ??? ?? ??? ?? ??? ?? ????? ?? ?? ???? ???? ??? ? ????. ?? ??? ??? ??

watch4pro? ? ????, ??? gt???? watch4pro? ? ????, ??? gt???? Sep 26, 2023 pm 02:45 PM

Watch4pro? gt? ?? ?? ?? ??? ?? ??? ????? ??? ????. ???? ??, ???, ??? ??? ??? ?? ? ?? ??? ??? ??? ??? Watch 4 Pro? ? ??? ? ????. ?? ?? ?? ??? ?? ??? ??? ???? ??? ? ?? ??? ???? ?? GT ???? ? ??? ? ????. ?? ??? ??? ??? ??, ???? ?? ????? ???. ??? ??? ? ??? ? ????, ??? ??? ?? ??? ??? ???? ?? ??? ??? ?? ?? ????.

See all articles