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;