1. 下载 ImageMagick
安装后不得请多试试几个版本 64位系统也可以安装32位的程序
ImageMagick-7.0.5-0-Q16-x64-dll
ImageMagick-6.2.7-6-Q16-windows-dll
Windows Server2012 64位用的是下面这个32位版才安装成功的
ImageMagick-6.8.4-0-Q16-x86-dll
多版本php环境记得修改php.ini里面的在运行php版本对应路径
2. 安装 ImageMagick
安装 ImageMagick 到 PC 上。安装路径不能出现空格,否则无法使用。安装时,一点选中把执行路径添加到 path 上,否则你就得手动去添加 path 路径了。
3. 测试安装
打开windows 命令行窗口(win+r -> “cmd” -> Enter),输入convert,回车。会出现convert的帮助文档,如果没有出现,说明没有安装成功,或没有把安装目录添加到环境变量 path 中。
4. 下载 php扩展 php_imagick.dll
下载地址 http://www.peewit.fr/imagick/
http://pecl.php.net/package/imagick/3.4.3/windows
php_imagick-3.2.0RC1-5.6-nts-vc11-x86
本站使用的是nts 32位版的dll
判断PHP 是ts还是nts版
通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。5. 把dll文件重命名为php_imagick.dll,并放到php 扩展文件目录 php/ext 中。
6. 在 php.ini 配置文件中添加,extension=php_imagick.dll。
7. 重启电脑,只重启apache不管用的情况下,重启下PC。因为扩展底层使用的是imageMagic软件,所以软件重启电脑,重新加载软件,并刷新path路径。
8. 重启后,打开 phpinfo页面,查看,扩展已经安装成功。如果还未安装成功,极有可能imagemagick软件版本过高,请选择更低一级的版本安装。
9. PHP测试代码。
<?php
$im = new imagick( 'a.jpg' );
// resize by 200 width and keep the ratio
$im->thumbnailImage( 200, 0);
// write to disk
$im->writeImage( 'a_thumbnail.jpg' );10. 查看手册,学习API
相关扩展学习手册地址 http://uk3.php.net/manual/zh/book.imagick.php]http://uk3.php.net/manual/zh/book.imagick.php]http://uk3.php.net/manual/zh/book.imagick.php 手册中包含大量易用实例。
这里还有查看命令行参数的文档 http://www.imagemagick.org/Usage/
windows7下安装php的imagick和imagemagick扩展教程
php open_basedir restriction in effect. 的问题
open_basedir='/var/www/html/:/usr/share/pear/';如果是nginx环境,解决方法就是在/etc/nginx/fastcgi_params PHP_VALUE 中修改
"open_basedir=$document_root:$document_root/../:/usr/share/pear:/usr/share/php:/etc/phpMyAdmin:/tmp:/proc";解决: 在/www下建立/tmp 并赋予权限php扩展 调试命令:
在cmd运行: php --ri imagick
1. 如果报错是:“php_imagick.dll' - %1 不是有效的 Win32 应用程序” ,则说明版本不相符合。 需要检查 imagick软件本身( 如x86 )、php本身( x86 ts (thread safe) )、php扩展php_imagick.dll (ts) 三方版本 要一致。
2. 如果报错是:“php.exe - 系统错误 ,无法启动此程序因为计算机丢失CORE_RL_wand_.dll ” , 说明你没有将 php_imagick-3.3.0-5.4-ts-vc9-x86.zip 扩展包中的“CORE_*.dll” 这些dll文件 放到 你的php.exe同级目录下。 ,只需要拷贝 CORE_*.dll 到php目录就可以解决了。
3. 如果php --ri imagick 显示的结果 ImageMagick number of supported formats: => 0 支持的图片格式数量为0,请看第5步需要新建一个环境变量。
4.如果php代码执行调用时报错:“ NoDecodeDelegateForThisImageFormat ”,表明你的php_imagick.dll的版本 并不支持或并不匹配 ImageMagick软件版本,这时候 php --ri imagick 的结果也显示为: ImageMagick number of supported formats => 0 。需要更换ImageMagick软件版本。
PHP中Imagick的使用
ImageMagick 中文站
Imagick::compositeImage
Imagick::getImageFormat
php 给图片增加背景平铺水印代码
<?php
$image = new imagick('logo.jpg');
$im = new imagick();
$im->newimage( 140, 80, new imagickpixel( "none" ) );
$draw = new imagickdraw();
$draw->setfillcolor(new imagickpixel( "grey" ));
$draw->setgravity(imagick::gravity_northwest);
$draw->annotation(10,10 ,'copyright');
$draw->setgravity(imagick::gravity_southeast);
$draw->annotation(5,15 ,'copyright');
$im->drawimage( $draw);
$image = $image->textureimage($im);
$image->compositeimage($image,imagick::composite_copy,0,0);
header( "content-type: image/{$image->getimageformat()}" );
$image->writeimage('wmark_text_tiled.jpg');
$image->clear();
$image->destroy();上传图片并添加水平平铺水印实例完整代码 文字水印,图片水印
<?php
include 'db.php';
if(!$uligon){
header('Location:/login.php');
exit;
}
if(date('j',$ttitme)>$conf['my']) exit('本月作品'.$conf['my'].'号之后禁止修改!');
$file=$_FILES["file"]["tmp_name"];
if(!$file) exit('图片上传失败!');
$image = new imagick($file);
$syxzsssyxzss=$conf['syxz'];
if($conf['syxzss']) $syxzsssyxzss=rand(-360,360);//水印旋转
if($conf['syxzssf']==1){
$im = new imagick();
$im->newimage( $conf['sykd'], $conf['sygd'], new imagickpixel( "none" ) ); //水印高度 宽度 背景色
$draw = new imagickdraw();
$draw->setfillcolor(new imagickpixel( $conf['syys'] ));//水印颜色
//$draw->setgravity(imagick::gravity_northwest);
$draw->setFont('simsun.ttc');//水印字体
$waterText=$conf['sy'];
$draw->annotation($conf['syzb'],$conf['syyb'] ,$waterText);//水印文字 左 上距离
//$draw->setgravity(imagick::gravity_southeast);
//$draw->annotation(5,15 ,'copyright');//多重水印
$im->drawimage( $draw);
$im->rotateImage(new ImagickPixel('none'), $syxzsssyxzss);
$image = $image->textureimage($im);
}else if($conf['syxzssf']==2){
$src2 = new Imagick('logo3.png');//图片水印
$src2->rotateImage(new ImagickPixel('none'), $syxzsssyxzss);
$image = $image->textureimage($src2);
}
//$image->compositeimage($image,imagick::composite_copy,0,0);
//header( "content-type: image/{$image->getimageformat()}" );
$nwff=md5(md5(md5($file).rand(100000,999999).$ttitme).rand(1000000,9999999));
$immmok= $image->writeimage('u/'.$nwff.'.jpg');
$image->clear();
$image->destroy();
//imagejpeg($im);
if($immmok){
$stmt = $dbh->prepare("INSERT INTO p (uid, url,ctime,dtime,mtime,dday,zt,bz,sm) VALUES (:uid, :url,:ctime,:dtime,:mtime,:dday,:zt,:bz,:sm)");
$stmt->bindParam(':uid', $uligon);
$stmt->bindParam(':url', $nwff);
$stmt->bindParam(':sm', $_POST['sm']);
$stmt->bindParam(':zt', $stmtusernewbbttt['bt']);
$stmt->bindParam(':bz', $stmtusernewbbttt['bz']);
/*$dtime=date('Y',$ttitme);
$mtime=date('n',$ttitme);
$ctime=$ttitme;
$dday=date('j',$ttitme);*/
//$ttitme=$ttitme;
$ctime=$ttitme;
$dtime=date('Y',$ttitme);
$mtime=date('n',$ttitme);
$dday=date('j',$ttitme);
$stmt->bindParam(':dtime', $dtime);
$stmt->bindParam(':mtime', $mtime);
$stmt->bindParam(':ctime', $ctime);
$stmt->bindParam(':dday', $dday);
$stmt->execute();
$title='会员管理';
$mmmdddhh='up';
include 'headu.php';
echo '<p style="margin-top: 29px;"><i class="fi-check" style="color:green;"></i>上传成功!3秒后跳转!</p><script>setTimeout("location.href = \'u.php?mm=by\';",2000);</script>';
include 'foot.php';
exit;
}
exit('上传失败!');
?>
演示代码 效果php文字水印图片水印平铺实例
<?php
/*error_reporting(E_ALL);
ini_set('display_errors',1);*/
$file='a.jpg';
$image = new imagick($file);
$syxzsssyxzss=-40;//rand(-360,360);//水印旋转
$im = new imagick();
$im->newimage( 200, 80, new imagickpixel( "none" ) ); //水印高度 宽度 背景色
$draw = new imagickdraw();
$draw->setfillcolor(new imagickpixel( 'red' ));//水印颜色
//$draw->setgravity(imagick::gravity_northwest);
$draw->setFont('simsun.ttc');//水印字体
//$waterText=$conf['sy'];
$draw->annotation(15,20 ,'意思完 意思玩 yisiwan.com');//水印文字 左 上距离
//$draw->setgravity(imagick::gravity_southeast);
//$draw->annotation(5,15 ,'copyright');//多重水印
$im->drawimage( $draw);
$im->rotateImage(new ImagickPixel('none'), $syxzsssyxzss);
$image = $image->textureimage($im);
//$image->compositeimage($image,imagick::composite_copy,0,0);
//header( "content-type: image/{$image->getimageformat()}" );
//$nwff=md5(md5(md5($file).rand(100000,999999).$ttitme).rand(1000000,9999999));
$immmok= $image->writeimage('1.jpg');
$image->clear();
$image->destroy();
//imagejpeg($im);

php平铺水印
imagick代码:
随机的在角落生成水印
中石化:别看你不加油,你拿起油枪时我们就开始亏损了
nginx No input file specified.
是配置php环境变量导致,删除去掉即可.
😊😅