php imagemagick 使用

安装扩展成功后查看相关参数

php -m 查看是否正常支持

php --ri imagick 详细信息

 https://pecl.php.net/package/imagick

 

1,修改尺寸(长宽)

$im = new Imagick(); 
$im->readImage( './2.png' ); 

$im->thumbnailImage( 300, 200);// 按填入长宽进行修改
$im->thumbnailImage( 300, null ); //如果后面参数为null 会自动保持比例
$im->writeImage( './222.png' ); 
$im->destroy();

2,设置图片质量

$im->setCompressionQuality(80)  //如果图片已经被压缩过,可能效果不大。

3,修改图片格式

$im->setImageFormat('jpg');

或者保存是直接修改

$im->writeImage( './222.png' ); 

4,对图片进行裁剪

$im= new Imagick('./2.png');
$x = 100; // X坐标
$y = 100; // Y坐标
$width = 200; // 宽度
$height = 200; // 高度 
$im->cropImage($width, $height, $x, $y); //x y 只从图片那个位置开始,如果从左侧定点位置可以使用0 ,0
$image->resizeImage(100, 100, Imagick::FILTER_LANCZOS, 1); 
$image->writeImage('./cropped_image.jpg'); 
$image->clear();
$image->destroy();

5,获取图片长宽

$im->getImageWidth()

$im->getImageHeight()

6,添加文字水印

$imagePath = './2.png'; // 图片路径
$text = "Hello World"; // 要添加的文本
$font = './msjh.ttc'; // 字体文件路径,如果是系统自带字体可以省略这个设置
$fontSize = 20; // 字体大小
$textColor = new ImagickPixel('Green'); // 文本颜色
$textPositionX = 10; // X坐标位置
$textPositionY = 20; // Y坐标位置
$imagick = new Imagick($imagePath);
$draw = new ImagickDraw();
$draw->setFont($font);
$draw->setFontSize($fontSize);
$draw->setFillColor($textColor);
$draw->annotation($textPositionX, $textPositionY, $text);
$imagick->drawImage($draw);
//header("Content-Type: image/jpg");
//echo $imagick->getImageBlob();
$imagick->writeImage( './ziti.png' );
$draw->destroy();
$imagick->destroy();

7,添加图片水印

$imagePath = './222.png'; // 原始图片路径
$watermarkPath = './72.png'; // 水印图片路径 
$imagick = new Imagick($imagePath);
$waterMark = new Imagick($watermarkPath);
$waterMark->resizeImage(100, 0, Imagick::FILTER_LANCZOS, 1);
// 计算水印位置
$offsetX = $imagick->getImageWidth() - $waterMark->getImageWidth() - 10; // 水平方向偏移量
$offsetY = $imagick->getImageHeight() - $waterMark->getImageHeight() - 10; // 垂直方向偏移量
// 将水印图片合并到原图
$imagick->compositeImage($waterMark, Imagick::COMPOSITE_OVER, $offsetX, $offsetY);
$imagick->writeImage('output2.png');

8,pdf转图片

需下载:https://www.ghostscript.com/releases/gsdnld.html 

$imagick = new Imagick();

$imagick->readImage('./cURL.pdf[0]'); // [0] 表示读取第一页,可以通过修改索引来读取其他页

$imagick->setImageFormat('png');
$imagick->writeImage('pdf.png');$imagick->clear();

$imagick->destroy();

批量处理

 

$im = new Imagick();
$im->readImage( './sanxia.pdf' );
$im->setCompressionQuality(99);
$im->setResolution(800,600);
$num=0;
foreach($im as $k=>$v){
$v->setImageFormat('jpg');
$fname=$num.'.jpg';
if($v->writeImage('./pdf/'.$fname)==true){
echo $fname;
}
$num++;
}

 

posted @   fsl  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2013-01-08 JS 字符串
点击右上角即可分享
微信分享提示