ImageMagick是一個免費的創建、編輯、合成圖片的軟件。它可以讀取、轉換、寫入多種格式的圖片。圖片切割、顏色替換、各種效果的應用,圖片的旋轉、組合,文本,直線,多邊形,橢圓,曲線,附加到圖片伸展旋轉。
官方網站:https://imagemagick.org/index.php
PHP相關文檔:https://www.php.net/manual/zh/book.imagick.php
安裝ImageMagick
相關文章:https://imagemagick.org/script/download.php
1.window
下載安裝可執行文件即可:https://imagemagick.org/script/download.php#windows
下載安裝擴展:https://pecl.php.net/package/imagick
拓展的版本需要和PHP版本相匹配,版本不匹配時擴展無法加載(32位、64位、兼容的PHP版本等)
2.linux
# 安裝ImageMagick
yum install ImageMagick
yum install ImageMagick-devel
# 安裝拓展
pecl install imagick-3.6.0
# 手動安裝
wget https://pecl.php.net/get/imagick-3.6.0.tgz -T 5
tar -zxf imagick-3.6.0.tgz
cd imagick-3.6.0
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config --with-imagick=/usr/local/ImageMagick-7.1.0 --with-webp
make && make install
ImageMagick-devel是用于 ImageMagick程序開發的靜態庫和頭文件。
Imagick介紹
在Imagick中可以同時存在多張圖像,比如:
- newImage(新建圖像)
- addImage(添加圖像)
- clone關鍵詞(克隆圖像)
- hasNextImage和hasPreviousImage(是否還有其他圖像)
- getIteratorIndex和setIteratorIndex(setImageIndex)和resetIterator和setLastIterator
- appendImages,追加一整個ImageMagick對象
- getNumberImages,獲取圖像的數量
- Imagick通過destroy()/clear()方法釋放內存
相關函數
相關常量:https://www.php.net/manual/zh/imagick.constants.php
1.Imagick類
Imagick類涵蓋了如何修改基于像素的圖像的 Imagick 類的所有方法。
1.1 創建畫布
// 創建一個新圖片,寬500px,高300px,黑色,格式為png的圖片:
// 也可以使用遠程圖片進行初始化
$img =new Imagick();
$img->newImage(500,300,'black','png');
1.2 獲取圖片的分辨率
// 通過圖片路徑進行初始化
$imgtwo = new Imagick($imageSrc);
$height=$img->getImageHeight();//獲取圖片1高度
$width=$img->getImageWidth();//獲取圖片1寬度
// 獲取長寬的關聯數組
$img->getImageGeometry();
1.3 文字繪制
<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel('white');
/* New image */
$image->newImage(800, 300, $pixel);
/* Black text */
$draw->setFillColor('green');
/* Font properties */
$draw->setFont('./a.ttf');
$draw->setFontSize(30);
/* Create text */
/* 可通過換行符實現文字寫入時的換行 */
$image->annotateImage($draw, 30, 140, 0, '使用php/windows 安裝 ImageMagick 擴展');
/* Give image a format */
$image->setImageFormat('png');
/* Output the image with headers */
header('Content-type: image/png');
echo $image;