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

Heim Backend-Entwicklung PHP-Tutorial 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

這里說的imagickImageMagick 在PHP下的擴(kuò)展。使用pecl安裝起來那叫一個輕松簡單 —— 一條命令就搞定:

sudo pecl install imagick

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

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

  1. 如果有1張圖片,就直接生成這張圖片的縮略圖;
  2. 如果有2張圖片,則一張在左邊一張在右邊,各一半;
  3. 如果有3張圖片,則兩張左邊平均分配,一張獨(dú)占右邊;
  4. 如果有4張圖片,則像田字格一樣平均分配空間;
  5. 更多張圖片,則只取前4張,按田字格方式生成縮略圖。

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

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

效果立馬出來了:

贊一個~

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

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgeh?use + hochaufl?sende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangeh?use/Keramikgeh?use + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgef?? und Sicherheit hinzugefügt

Welche Datei ist ein Miniaturbild? Welche Datei ist ein Miniaturbild? Jan 25, 2021 am 11:23 AM

Miniaturansicht ist eine Cache-Datei. Miniaturansicht ist eine Datei, die aus dem Cache-Miniaturbild der mit dem Mobiltelefon gelieferten Kamera erstellt wird. Der Hauptgrund für die Erstellung dieser Datei besteht darin, dass die Miniaturansicht des Mobiltelefonfotos automatisch zwischengespeichert wird es als Cache, d. h. nachdem der Benutzer das Foto angesehen hat, wird in diesem Ordner eine Cache-Miniaturansicht generiert.

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verst?ndnis der Grundursache des Problems kann dabei helfen, die richtige L?sung zu finden. Hier sind die h?ufigsten Gründe, warum das Snipping Tool m?glicherweise nicht ordnungsgem?? funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool ge?ffnet wird. Besch?digte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es m?glicherweise besch?digt. Veraltete Grafiktreiber: Inkompatible Treiber k?nnen das Snipping-Tool beeintr?chtigen. St?rungen durch andere Anwendungen: Andere laufende Anwendungen k?nnen mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler w?hrend des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache L?sung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

Was bedeutet die Breite von HTML? Was bedeutet die Breite von HTML? Jun 03, 2021 pm 02:15 PM

In HTML5 bedeutet ?Breite“ die Breite des Inhaltsbereichs. Sie k?nnen innere R?nder, R?nder und ?u?ere R?nder au?erhalb des Inhaltsbereichs hinzufügen Element.

So beheben Sie den Fehler ?Verbindung zum App Store nicht m?glich' auf dem iPhone So beheben Sie den Fehler ?Verbindung zum App Store nicht m?glich' auf dem iPhone Jul 29, 2023 am 08:22 AM

Teil 1: Erste Schritte zur Fehlerbehebung überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen L?sungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt m?glicherweise nicht an Ihrem Ger?t; die Server von Apple sind m?glicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgem?? funktioniert. Wenn es ein Problem gibt, k?nnen Sie nur warten, bis Apple es behebt. überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem ?Verbindung zum AppStore nicht m?glich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

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

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

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Mar 21, 2024 pm 10:31 PM

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Die Verl?ngerung der Akkulaufzeit ist der Schlüssel zum mobilen Ger?teerlebnis, und das iPad ist ein gutes Beispiel. Wenn Sie das Gefühl haben, dass der Akku Ihres iPads zu schnell leer wird, machen Sie sich keine Sorgen, es gibt eine Reihe von Tricks und Optimierungen in iPadOS 17.4, die die Laufzeit Ihres Ger?ts deutlich verl?ngern k?nnen. Das Ziel dieses ausführlichen Leitfadens besteht nicht nur darin, Informationen bereitzustellen, sondern auch darin, die Art und Weise zu ?ndern, wie Sie Ihr iPad verwenden, Ihr gesamtes Batteriemanagement zu verbessern und sicherzustellen, dass Sie sich l?nger auf Ihr Ger?t verlassen k?nnen, ohne es aufladen zu müssen. Durch die übernahme der hier beschriebenen Vorgehensweisen machen Sie einen Schritt hin zu einem effizienteren und bewussteren Einsatz von Technologie, der auf Ihre individuellen Bedürfnisse und Nutzungsmuster zugeschnitten ist. Identifizieren Sie die gr??ten Energieverbraucher

Ist watch4pro besser oder GT? Ist watch4pro besser oder GT? Sep 26, 2023 pm 02:45 PM

Watch4pro und GT verfügen jeweils über unterschiedliche Funktionen und Anwendungsszenarien. Wenn Sie Wert auf umfassende Funktionen, hohe Leistung und ein stilvolles Erscheinungsbild legen und bereit sind, einen h?heren Preis in Kauf zu nehmen, ist Watch 4 Pro m?glicherweise besser geeignet. Wenn Sie keine hohen funktionalen Ansprüche haben und mehr Wert auf Akkulaufzeit und einen angemessenen Preis legen, ist die GT-Serie m?glicherweise besser geeignet. Die endgültige Wahl sollte auf der Grundlage pers?nlicher Bedürfnisse, Budgets und Vorlieben getroffen werden. Es wird empfohlen, vor dem Kauf Ihre eigenen Bedürfnisse sorgf?ltig zu prüfen und sich die Bewertungen und Vergleiche verschiedener Produkte anzusehen, um eine fundiertere Entscheidung zu treffen.

See all articles