ImageMagick 图片处理 函数说明和使用举例

简介:

ImageMagick 函数说明和使用举例,作者:打打 QQ:1069576404

首先,加载php_imagick.dll扩展模块,也就是在网上找到php_imagick.dll文件,把它放在php.ini同级的目录中,然后,在php.ini里加上extension=php_imagick.dll,重启服务器就可以了。

函数说明:

$images = new Imagick("ALIM2382.JPG");//新建 Imagick 类
$images->getImageHeight();//获得图片高
$images->getImageWidth();//获得图片宽
$images->thumbnailImage(100,100);////改变图片的大小
$images->writeImages("ALIM2382.JPG",true);//写一个图像或图像序列
$images->writeImage("ALIM2382.JPG");//写一个图像
$images->destroy();//销毁图片
$images->borderImage(new ImagickPixel("red"), 3, 3);//设置图片边框红色,边框为3
$images->modulateImage(50, 0, 0); //控制亮度、饱和度、色调
$images->compositeImage($im, imagick::COMPOSITE_OVER, 10, 20);//将两个图像符合到一起。
$images->setImageFormat('jpeg');//设置图片格式
$images->getImageResolution()// 返回图像分辨率,X和Y轴信息
$images->getImageUnits()//     返回图像分辨率单位
$images->resampleImage()// 以期望的分辨率重新采样
$images->setImageResolution()//       设置分辨率
$images->setImageUnits()//   设置分辨率单位
echo $images;//显示
其他请参考 http://cn.php.net/imagick 网站

实例演示:

$img='ALIM2382.JPG';
//生成图片
$images=doimage_middle($img);
//显示图片
echo $images;
//销毁
$images->destroy();

//生成图片效果请参考‘我的相册’。


//返回文件的扩展名
function extension($filename)
{
    $img_ext="";
    $path_parts = pathinfo($filename);
    $img_ext=$path_parts["extension"];
    return $img_ext;
}
//生成图片
function doimage_middle($imgname)
{
//获得文件扩展名
$img_ext=extension($imgname); 
    //新建 Imagick 类
$images = new Imagick($imgname);
    $Height = $images->getImageHeight();
$Width = $images->getImageWidth();
//获得宽高的比率
    $ratio = Resize($Height,$Width);
    $new_width = $Width*$ratio;
    $new_height = $Height*$ratio;
//改变图片的大小为:
$images->thumbnailImage($new_width,$new_height);
//写一个图像或图像序列
$images->writeImage($imgname.'_middle.'.$img_ext);
return $images;
}

//获得 图片宽高的比率
function Resize( $height,$width, $maxwidth=400, $maxheight=400){
$RESIZEWIDTH=$RESIZEHEIGHT=false;
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
   if($maxwidth && $width > $maxwidth){
   $widthratio = $maxwidth/$width;
   $RESIZEWIDTH=true;
   }
   if($maxheight && $height > $maxheight){
   $heightratio = $maxheight/$height;
   $RESIZEHEIGHT=true;
   }
   if($RESIZEWIDTH && $RESIZEHEIGHT){
    if($widthratio < $heightratio){
     $ratio = $widthratio;
    }else{
     $ratio = $heightratio;
    }
   }elseif($RESIZEWIDTH){
    $ratio = $widthratio;
   }elseif($RESIZEHEIGHT){
    $ratio = $heightratio;
   }

}else{
   $ratio=1;
}
return $ratio;
}

本文转自博客园知识天地的博客,原文链接:ImageMagick 图片处理 函数说明和使用举例,如需转载请自行联系原博主。


相关文章
Halcon区域region的生成,使用点坐标
Halcon区域region的生成,使用点坐标
1053 0
|
消息中间件 RocketMQ 存储
rocketMq - 并发消费过程
rocketMq消费过程包括两种,分别是并发消费和有序消费,每个消费方式都可以单独拿出来进行分享,这篇文章单独用来分析并发消费问题。 并发消费需要理解的几个核心点:并发消费的消息拉取,并发消费的消息重试,并发消息的ack机制,消费进度的持久化,这篇分享会就这几个问题分解展开。
3941 0
|
安全 NoSQL Ubuntu
linux 添加用户useradd 段错误 (核心已转储)
在Linux系统中使用`useradd`命令添加用户时遇到“段错误 (核心已转储)”的问题,通常表明存在系统级或关键组件问题。可通过检查系统日志(如`/var/log/syslog`)和内核消息来定位错误。此外,还需检查并修复文件系统错误(使用`fsck`),确保关键配置文件未损坏,并更新系统包与安全补丁。使用内存检测工具(如memtest86+)排查硬件故障,或重新安装`useradd`及其依赖库。通过`strace`跟踪命令执行过程,检查SELinux/AppArmor安全策略影响,并分析核心转储文件以进一步诊断问题根源。
853 1
|
存储 Kubernetes 调度
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
|
Java 网络协议 应用服务中间件
SpringBoot项目整合Netty
SpringBoot项目集成Netty实现服务端
7366 0
SpringBoot项目整合Netty
|
设计模式 Go
Go语言实现设计模式之建造者模式
设计模式是软件开发中常用的解决问题的方法论,其中之一就是建造者模式。本文将详细介绍建造者模式的概念和原理,并使用Go语言实现一个示例,以帮助读者更好地理解该设计模式的应用。
297 0
|
C# Android开发 iOS开发
9 个 .NET UI 框架,您的选择是?
介绍 9 款 .NET UI 框架,有你的菜麽。
2539 1
9 个 .NET UI 框架,您的选择是?
|
机器学习/深度学习 存储 算法
YOLO落地部署 | 让YOLO5和YOLO7等方法都可以用上4-bit/3-bit的超快部署方案
YOLO落地部署 | 让YOLO5和YOLO7等方法都可以用上4-bit/3-bit的超快部署方案
375 0
|
算法 数据可视化 C#
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐标点集合。实验结果表明,该算法能够有效地平滑折线,并且具有较高的精度和可控性。
677 0
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
Halcon 学习笔记九:mlp训练学习实战颜色识别
Halcon 学习笔记九:mlp训练学习实战颜色识别
466 0