通过php安装Imagick扩展给动态gif图片打水印

通过php安装Imagick扩展给动态gif图片打水印


一直以来php处理图片都是以gd为主流,直到近些年Imagick的使用才渐渐变多。

gd通常用来缩放图片,给图片打水印等基本功能,对于复杂效果如制作图标按钮、图倒影等滤镜功能就会力不从心。

尤其对于有多帧图片的动态gif图打水印,如果使用gd像处理普通jpg那样去打水印,打完水印后的图片只剩下第一帧,没有动态效果。

Imagick就能很好的胜任这一点,使得php给动态gif图片打水印成为可能,而且它还具有内存占用小,画质高的特点。

下面是分别使用gd(左图)和imagick(右图)把图片缩放到256px效果,请注意查看图片的细节。


下面我会详细介绍“php怎么安装Imagick扩展”并实例说明如何給动态gif图片打水印。



imagick有两种使用方式:

1.命令行下调用convert命令

2.php调用函数库Imagick(需要1作为安装基础)



安装前的准备工作(ImageMagick 6.8.8+ , PHP 5.1.3+.),先安装需要的库文件

yum
install tcl-devel.x86_64 libpng-devel.x86_64 libjpeg-devel.x86_64
ghostscript-devel.x86_64 bzip2-devel.x86_64 freetype-devel.x86_64
libtiff-devel.x86_64

yum install libjpeg-devel.x86_64 libpng-devel.x86_64
glib2-devel.x86_64 fontconfig-devel.x86_64 zlib-devel.x86_64 libwmf-devel.x86_64
freetype-devel.x86_64 libtiff-devel.x86_64libjpeg-devel libpng-devel glib2-devel
fontconfig-devel zlib-devel libwmf-devel freetype-devel
libtiff-devel

下载imagemagick并编译安装
wget -c
http://www.imagemagick.org/download/ImageMagick.tar.gz

tar -zxvf
ImageMagick.tar.gz

cd
ImageMagick-6.8.8-10

./configure --prefix=/usr/local/ImageMagick 
--with-bzlib=yes --with-fontconfig=yes --with-freetype=yes --with-gslib=yes
--with-gvc=yes --with-jpeg=yes --with-jp2=yes --with-png=yes
--with-tiff=yes

make && make install

jpeg_default_qtables error

没有找 libjpg

wget
http://www.ijg.org/files/jpegsrc.v9.tar.gz

tar -xzvf
jpegsrc.v9.tar.gz

cd jpeg-9

./configure

make
libdir=/usr/lib64

make libdir=/usr/lib64
install

ldconfig /usr/lib64

sudo ldconfig /usr/local/lib

(编译安装过程时间比较长,请耐心等待。安装后 convert 的路径是
/usr/local/bin/convert,可以直接从命令行运行"convert -version"来看看版本。如果发现类似错误,convert: error
while loading shared libraries: libMagickCore.so.3: cannot open shared object
file: No such file or directory,可以执行"ldconfig
/usr/"重新加载一下库文件的路径。)

到这里imagemagic命令行工具已经安装完成,也就是常说的convert命令,执行回下命令会生成logo.gif图片就表示命令行下的imagemagic安装完成了,快来体验一下吧。

cd
/usr/local/nginx/html/
/usr/local/bin/convert logo:
logo.gif

访问http://www.nginx.cn/logo.gif

如果你能看到这个图片就表示安装正确。

高级命令令例子:

从中间裁切200x200正方形图片

convert
1.jpg -gravity center -extent 200x200
2.jpg

生成的图片最小的边要有500像素

convert 1.jpg -resize 500x500^
2.jpg

合成一条,看看有多强大,你放张200x300左右的图片试下,这条命令将会将图片最小的边按比例强行扩大到500像素,再从正中央裁切200像素的正方式

convert
1.jpg -resize 500x500^ -gravity center -extent 200x200 2.jpg

给图片 base.jpg
在y100,x10的位置加上图片 sy.png 水印

composite -geometry +100+10 sy.png base.jpg
finished.jpg

详细功能请参考官方手册

http://www.imagemagick.org/Usage/

php增加imagick扩展函数

1.译PHP原生库Imagick

wget http://pecl.php.net/get/imagick-3.1.1.tgz
tar zxvf
imagick-3.1.1.tgz
cd imagick-3.1.1/
/usr/local/php/bin/phpize
ln -s
/usr/local/include/ImageMagick-6 /usr/local/include/ImageMagick
./configure
--with-php-config=/usr/local/php/bin/php-config
make
make
install

/usr/local/php替换为你的php安装路径并确认bin目录下存在php-config文件

编译成功后会在php
扩展目录生成imagick.so
位置是
Installing shared extensions:

/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
Installing
header files:
/usr/local/php/include/php/

2.php加载Imagick库

修改php.ini,文件末尾加上一行
extension = "imagick.so"

如何查找php.ini的位置?

执行
/usr/local/php/bin/php --ini
会显示php.ini所在路径,路径下没有php.ini文件,

Configuration File (php.ini) Path: /usr/local/php/lib
Loaded Configuration
File: (none)
Scan for additional .ini files in: (none)
Additional .ini
files parsed: (none)

我们可以新建一个空的php.ini,并加入一行extension = "imagick.so"

vi /usr/local/php/lib
增加

extension =
"imagick.so"

3.查看phpinfo,确认imagick是否加载成功

使用imagick库生产缩略图,logo.gif是前面用命令行生产的图片

[php]
<?php
header(‘Content-type: image/jpeg‘);

$image = new
Imagick(‘logo.gif‘);
$image->adaptiveResizeImage(1024,768);

echo
$image;
?>

[/php]

访问:htt://www.nginx.cn/p.php

[php]
<?php

$image = new Imagick(‘old.gif‘);
$image = $image->coalesceImages();

foreach ($image as $frame) {
$frame->thumbnailImage(50, 50);
}

$image = $image->optimizeImageLayers();
$image->writeImages(‘new.gif‘,
true);
?>
[/php]

安装过程中遇到的错误:

magick/.libs/libMagickCore.so: undefined reference to `gzseek64‘

magick/.libs/libMagickCore.so: undefined reference to `gztell64‘

magick/.libs/libMagickCore.so: undefined reference to
`gzopen64

从字面上看找不到64为的zlib,也就是说没能正确链接到64的zlib路径,我们可以安装64的zlib并把它的路径加到命令行(推荐方式)。

具体步骤

ldconfig
-v |grep libz
显示,这个库是32位的所以连接失败
libz.so.1 ->
libz.so.1.2.3

wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf
zlib-1.2.8.tar.gz
cd zlib-1.2.8

CFLAGS=-fPIC ./configure
--libdir=/usr/lib64 --prefix=/usr
make
make install

cd
../ImageMagick-6.8.6-10/

./configure
--with-zlib-dir=/usr/local/lib/

make

如果编译还是错误,可以把libz.so.1.2.3移动到其它位置

mv
/usr/lib/libz.so.1.2.3 ~

ldconfig -v |grep libz
libz.so.1 ->
libz.so.1.2.8

再make就成功了。

checking for MagickWand.h header file...
configure: error: Cannot locate header file
MagickWand.h

新版的imagemagick路径修改了,需要建立到默认路径的软连接

ln -s
/usr/local/include/ImageMagick-6
/usr/local/include/ImageMagick

参考资料

http://valokuva.org/?cat=1


通过php安装Imagick扩展给动态gif图片打水印

时间: 2025-01-04 12:15:31

通过php安装Imagick扩展给动态gif图片打水印的相关文章

Window安装Imagick扩展及配置

Window安装Imagick扩展及配置 1.安装ImageMagick 下载地址:http://www.imagemagick.org/download/binaries/,可下载最新版本,如 ,.exe格式安装软件. 默认会安装Path路径,若没有,可自行配置. 然后,CMD命令窗口 -> 输入 convert -version -> 若出现版本信息则安装成功. 2.安装PHP扩展 PHP扩展Imagick下载:http://pecl.php.net/package/imagick,推荐下

Window10安装Imagick扩展及配置

1.安装ImageMagick 下载地址:http://www.imagemagick.org/download/binaries/,可下载最新版本,如 ,.exe格式安装软件. 默认会安装Path路径,若没有,可自行配置. 然后,CMD命令窗口 -> 输入 convert -version -> 若出现版本信息则安装成功. 2.安装PHP扩展 PHP扩展Imagick下载:http://pecl.php.net/package/imagick,推荐下载3.4.3稳定版本, 注:3.4仅支持6

linux centos8.1下PHP安装 Imagick扩展

php版本7.3.1 ImageMagick版本:ImageMagick-7.0.10-3 PHP版本imagick版本:imagick-3.4.3RC3 imageMagick安装 下载安装包 wget http://www.imagemagick.org/download/ImageMagick.tar.gz 解压 tar xvfz ImageMagick.tar.gz 进入文件 cd ImageMagick-6.8.6-7/ 设置安装路径 ./configure --prefix=/usr

php安装imagick扩展

参考链接:http://my.oschina.net/u/142836/blog/169382 需要下载的东西: libwebp-0.5.1.tar.gz wget    ImageMagick6.9.5.tar.gz wget http://git.imagemagick.org/repos/ImageMagick/repository/archive.tar.gz?ref=6.9.5-0 imagick-3.1.2.tgz https://pecl.php.net/get/imagick-3

windows下安装imagick扩展(转)

最近项目中需要用到图片的一些特殊处理——比如:根据用户请求生成任意尺寸的图像.经过一些资料的查找,最终选用了php_imagick.利用 ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小.旋转.锐化.减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存.本节我们就来介绍一下如何在 windows下安装php_imagick拓展. 1. 下载 Download ImageMagick #下载页面: http://www.image

windows7下Wamp安装php扩展imagick(转)

ImageMagick是一套功能强大.稳定而且免费的工具集和开发包,可以用来读.写和处理超过185种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式.利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小.旋转.锐化.减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存. 因为刚接触imagick扩展不会安装,那只能上网找教程了,网站各种各样的安装都有...主要是照着他们的教

PHP安装imagemagick扩展imagick

点击下载imagemagick系统源码包 点击下载php扩展imagick 安装imagemagick: # ./configure --prefix=/usr/local/imagemagick --with-bzlib=yes --with-fontconfig=yes --with-freetype=yes --with-gslib=yes --with-gvc=yes --with-jpeg=yes --with-jp2=yes --with-png=yes --with-tiff=ye

Linux下动态安装PHP扩展的一般方法(图)

------------------------------------------------------------------------------------------------------ 首先解释下面的Linux命令: ./configure  #脚本配置工具 ./configure --help  #查看脚本配置工具configure的命令行选项 /usr/local/php/bin/phpize #phpsize命令用于在编译好的PHP中扩展模块 [email protec

linux 安装 ImageMagick 和 imagick 扩展

使用命令安装 依次运行以下命令 yum install ImageMagick yum install ImageMagick-devel yum install php-pear 安装php-pear是为了使用pecl 中的 phpize yum -y install php-devel 2. 安装C编译器 yum install gcc 如果装不了gcc就用这个命令: yum install gcc gcc-c++ autoconf automake 3. 安装imagick pecl in