前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法

PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法

作者头像
房东的狗丶
发布2023-02-17 15:25:43
1.7K0
发布2023-02-17 15:25:43
举报
文章被收录于专栏:友人a的笔记丶友人a的笔记丶

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

代码语言:javascript
复制
# 安装ImageMagick
yum install ImageMagick
yum install ImageMagick-devel
# 安装拓展
pecl install imagick-3.6.0

ImageMagick-devel是用于 ImageMagick程序开发的静态库和头文件。

Imagick介绍

在Imagick中可以同时存在多张图像,比如:

  1. newImage(新建图像)
  2. addImage(添加图像)
  3. clone关键词(克隆图像)
  4. hasNextImage和hasPreviousImage(是否还有其他图像)
  5. getIteratorIndex和setIteratorIndex(setImageIndex)和resetIterator和setLastIterator
  6. appendImages,追加一整个ImageMagick对象
  7. getNumberImages,获取图像的数量

Imagick通过destroy()/clear()方法释放内存

相关函数

相关文档:https://phpimagick.com/

相关常量:https://www.php.net/manual/zh/imagick.constants.php

1.Imagick类

Imagick类涵盖了如何修改基于像素的图像的 Imagick 类的所有方法。

1.1 创建画布
代码语言:javascript
复制
// 创建一个新图片,宽500px,高300px,黑色,格式为png的图片:?
// 也可以使用远程图片进行初始化
$img =new Imagick();
$img->newImage(500,300,'black','png');
1.2 获取图片的分辨率
代码语言:javascript
复制
// 通过图片路径进行初始化
$imgtwo = new Imagick($imageSrc);
$height=$img->getImageHeight();//获取图片1高度
$width=$img->getImageWidth();//获取图片1宽度
// 获取长宽的关联数组
$img->getImageGeometry();
1.3 文字绘制
代码语言:javascript
复制
<?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;
PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法
PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法

示例

1.4 添加、减少噪点

相关函数:https://www.php.net/manual/zh/imagick.addnoiseimage.php

代码语言:javascript
复制
// 方法示例
bool Imagick::addNoiseImage ( $noise_type, $channel )
// 添加噪点
$image->addNoiseImage(3, imagick::CHANNEL_DEFAULT); 
// 减少噪点
$image->despeckleImage(); 
PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法
PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法

图片噪点

1.5 虚拟像素
代码语言:javascript
复制
//设置虚拟像素方法
$imagick->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_BACKGROUND);

//获取虚拟像素方法
$imagick->getImageVirtualPixelMethod();

虚拟像素就是指显示屏上的物理像素点数和实际显示的像素点数是1:N(N=2X2)的关系,它能显示的图像像素比显示屏的实际像素多是长宽像素各2倍。

1.6 读取图像
代码语言:javascript
复制
/*Imagick Object*/
$imagick = new Imagick();
$imagick->readImage('./10.png');
1.7 PDF转图片
代码语言:javascript
复制
// 读取PDF
$imagick->readImage('myfile.pdf);
// 读取PDF指定页
$imagick->readImage('myfile.pdf[0]');

$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(imagick::ALPHACHANNEL_REMOVE);
// 合并所有图层
$im->mergeImageLayers(imagick::LAYERMETHOD_FLATTEN);
1.8 缩小图像
代码语言:javascript
复制
// 缩小图像
$imagick = new Imagick();
$imagick->readImage('./file.png');
// 将图像的大小更改为给定的尺寸并删除所有关联的配置文件。长宽为0时,会按照比例自动缩放
// 指定第三个参数为true时,必须指定长宽,会按照比例来自动调整实际大小
$imagick->thumbnailImage(100, 0);

同时还可以使用scaleImage:

代码语言:javascript
复制
$im = new Imagick('1600x1200.jpg');
$im->scaleImage(2000, 1500, true); // => 1600x1200
$im->scaleImage(1000, 500, true); // => 666x500

resizeImage在缩放时,可以使用过滤器

1.9 图像组合
代码语言:javascript
复制
<?php

/* 创建对象 */
$im = new Imagick("10.png");
$im2 = new Imagick("20.png");

// $im2->setImageCompose(2); 设置图片合并的模式,类似前端canvas的globalposition属性

$im->compositeImage($im2,$im2->getImageCompose(),0,0);
1.11 绘制ImagickDraw对象
代码语言:javascript
复制
<?php
$string = "Hello world!";

$im = new Imagick();
$draw = new ImagickDraw();

$draw->setFillColor(new ImagickPixel('blue'));

$draw->setFontSize(28);

$metrix = $im->queryFontMetrics($draw, $string);

$draw->annotation(0,25,$string);

$im->newImage($metrix['textWidth'],$metrix['textHeight'], new ImagickPixel('white'));
$im->drawImage($draw);
$im->borderImage(new ImagickPixel('black'), 1, 1);
$im->setImageFormat('png');

$im->writeImage("./test.png");
其他方法
  • Imagick::getImageBlob、Imagick::getImagesBlob,获取图像的二进制数据。
  • Imagick::setImageBackgroundColor,设置图片背景颜色
  • Imagick::setImageType,设置图像类型(真彩色,调色板、灰度等)
  • Imagick::distortImage,用于扭曲图像
  • Imagick::getImageFormat,获取图像格式
  • Imagick::getImageMimeType,获取图像的MiMe类型
  • Imagick::chopImage() - 移除图像区域并进行修剪
  • Imagick::cropImage() - 截图图片的一块区域
  • Imagick::magnifyImage() - 按比例缩放图像 2倍
  • Imagick::minifyImage() - 将图像按比例缩放到其一半大小
  • Imagick::resizeImage() - 缩放图像
  • Imagick::scaleImage() - 缩放图像的大小
  • Imagick::shaveImage() - 从图像边缘去除像素
  • Imagick::thumbnailImage() - 改变图像的大小
  • Imagick::trimImage() - 从图像中移除边缘
  • Imagick::setOption,设置图像的一些元属性
  • Imagick::destroy/clear(),删除对象有关的所有资源
  • Imagick::coalesceImages,合成一组图像,用于处理GIF
  • Imagick::writeImage,写入文件

ImagickDraw

ImagickDraw 类允许通过 ImageMagick 绘制基于矢量的图像。

1.设置字体样式?

代码语言:javascript
复制
<?php

/* 设置字体描边 */
$draw->setStrokeColor($strokeColor);
/* 设置字体颜色 */
$draw->setFillColor($fillColor);
/* 设置描边的颜色 */
$draw->setStrokeWidth(2);
/* 设置字体的大小 */
$draw->setFontSize(36);
/* 设置字体 */
$draw->setFont("../fonts/Arial.ttf");
/* 指定文字 */
$draw->annotation(50, 50, "Lorem Ipsum!");
/* 设置透明度 */
$draw->setFillOpacity(0.4);
/* 正常、斜体、偏斜 */
$draw->setFontStyle(\Imagick::STYLE_OBLIQUE);
/* 设置字体的粗细 */
$draw->setFontWeight(900);
/* 设置上、下划线 */
$draw->setTextDecoration("Upperline")
/* 文字背景颜色 */
$draw->setTextUnderColor("#ffffff");
/* 文字字距 */
$draw->setTextKerning(1.2);

2.设置文本的对齐方式

代码语言:javascript
复制
<?php

// 对齐方式代表指定的原点在文字的位置
// 左对齐
$draw->setTextAlignment(\Imagick::ALIGN_LEFT);
$draw->annotation(250, 75, "Lorem Ipsum!");
// 居中
$draw->setTextAlignment(\Imagick::ALIGN_CENTER);
$draw->annotation(250, 150, "Lorem Ipsum!");
// 右对齐
$draw->setTextAlignment(\Imagick::ALIGN_RIGHT);
$draw->annotation(250, 225, "Lorem Ipsum!");

3.相关函数

  1. setFillRule,类似前端canvas的fill规则。
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装ImageMagick
    • 1.window
      • 2.linux
      • Imagick介绍
      • 相关函数
        • 1.Imagick类
          • 1.1 创建画布
          • 1.2 获取图片的分辨率
          • 1.3 文字绘制
          • 1.4 添加、减少噪点
          • 1.5 虚拟像素
          • 1.6 读取图像
          • 1.7 PDF转图片
          • 1.8 缩小图像
          • 1.9 图像组合
          • 1.11 绘制ImagickDraw对象
          • 其他方法
      • ImagickDraw
        • 1.设置字体样式?
          • 2.设置文本的对齐方式
            • 3.相关函数
            相关产品与服务
            图像处理
            图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com