centos 6.6 安装 imagemagick 和 php imagick 插件安装 心路历程

先介绍 环境

Linux 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

CentOS release 6.8 (Final)

aliyun 服务器


整个的关系图:





1. 第一遍安装 [安装部分只指出configure 参数]

初始安装 从imaggick 官网下载 source code

我安装的是 ImageMagick-7.0.7-30

./configure --prefix=/application/imagemagick


安装完成
安装 php imagick扩展 针对 apache

http://pecl.php.net/package/imagick. 下载   我的安装版本是 imagick-3.4.1 


phpize

./configure --with-php-config=/application/php/bin/php-config --with-imagick=/application/imagemagick/

然后就是配置 php.ini 文件
加上 extension = xxxx/xxxx/xx/imagick.so

重启apache 可以看到imagick 库

-----------题外话-----------
补充 mac 中我使用的是ampps 我也想安装 magick 库 来着 尽管我知道 ampps中 php 是32 位的 在编译的时候 加参数

参考 http://charles.lescampeurs.org/2013/06/18/add-c-header-include-path-pecl

但是我没有成功  知道的同学可以指导一下

---------题外话结束-----------


-------------php 部分程序 --------------------

function pdf2png($pdf, $path, $page = 0)
{
if (!is_dir($path)) {
mkdir($path, true);
}
if (!extension_loaded('imagick')) {
echo '没有找到imagick!';
return false;
}
if (!file_exists($pdf)) {
echo '没有找到pdf';
return false;
}
$im = new Imagick();

// $im->setResolution(120, 120); //设置图像分辨率
// $im->setCompressionQuality(80); //压缩比
$im->readImage($pdf . "[" . $page . "]"); //设置读取pdf的第一页
$im->setImageFormat( "jpg" );
// $im->thumbnailImage(200, 100, true); // 改变图像的大小
// $im->scaleImage(200, 100, true); //缩放大小图像
$filename = $path . "/" . time() . '.jpg';
if ($im->writeImage($filename) == true) {
$Return = $filename;
}
return $Return;
}

$s = pdf2png('demo.pdf', 'images');
echo '<div align="center"><img src="' . $s . '"></div>';

------------------------php 部分程序结束 -------------


2. 出现问题

1. php程序 读取不了pdf

报错 Fatal error : Uncaught exception 'ImagickException' with message ' FailedToExecuteCommand `'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits

解决方法 :

还需要 ghostscript 支持

./configure --prefix /application/ghostscript

安装完成之后

echo "export PATH=/application/ghostscript/bin:$PATH" >> /etc/profile

这个里面就有gs命令


第二遍安装

出现png decode delegate【委托】 错误 所有 引发第二遍安装

 'ImagickException' with message 'no decode delegate for this image format `PNG' 
另外说一句 在命令行直接执行
gs -dQUIET -dNOSAFER -r300 -dBATCH -sDEVICE=pngalpha -dNOPAUSE -dNOPROMPT -sOutputFile=images/demo%d.png demo.pdf
会成功

猜测原因是 convert 命令没有支持png

php 程序  $im->readImage($pdf . "[" . $page . "]"); //设置读取pdf的第一页 会用到imagemagick 下面的 convert 命令



可以使用 convert -list format 指令查看是否有png

发现没有 png 支持

方法一

直接yum install -y libpng-devel
yum install -y libjpeg-turbo-devel

[root@jstuw8tpu3gud9 ~]# rpm -aq libpng libjpeg-turbo
libjpeg-turbo-1.2.1-3.el6_5.x86_64
libpng-1.2.49-2.el6_7.x86_64

方法二

可以到 http://www.imagemagick.org/download/delegates/  站点下载源码 然后安装

我就偷了个懒 直接yum 安装了


重新编译 ImageMagick-7.0.7-30

多几个参数
./configure --prefix /application/imagemagick/ --enable-shared --enable-lzw --with-modules

和上面参考连接 只相差一个 “ –without-perl ” 个人觉得 少一个 不如多一个

编译出现错误

libltdl is required for modules and OpenCL builds

解决方法 安装 libltdl 支持

yum install -y libtool-ltdl-devel

最后编译结果如下

Options used to compile and link:
PREFIX = /application/imagemagick
EXEC-PREFIX = /application/imagemagick
VERSION = 7.0.7
CC = gcc -std=gnu99 -std=gnu99
CFLAGS = -I/usr/include/libpng12 -fopenmp -g -O2 -Wall -mtune=core2 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
CPPFLAGS = -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
PCFLAGS =
DEFS = -DHAVE_CONFIG_H
LDFLAGS =
LIBS =
CXX = g++
CXXFLAGS = -g -O2 -pthread
FEATURES = DPC HDRI Cipher OpenMP Modules
DELEGATES = mpeg jng jpeg png ps zlib
==============================================================================

貌似已经有了png

----------------------


make && make install

[root@jstuw8tpu3gud9 ImageMagick-7.0.7-30]# convert -list format | grep -i png
JNG* PNG rw- JPEG Network Graphics
See http://www.libpng.org/pub/mng/ for details about the JNG
MNG* PNG rw+ Multiple-image Network Graphics (libpng 1.2.49)
See http://www.libpng.org/pub/mng/ for details about the MNG
PNG* PNG rw- Portable Network Graphics (libpng 1.2.49)
See http://www.libpng.org/ for details about the PNG format.
PNG00* PNG rw- PNG inheriting bit-depth, color-type from original, if possible
PNG24* PNG rw- opaque or binary transparent 24-bit RGB (zlib 1.2.8,1.2.3)
PNG32* PNG rw- opaque or transparent 32-bit RGBA
PNG48* PNG rw- opaque or binary transparent 48-bit RGB
PNG64* PNG rw- opaque or transparent 64-bit RGBA
PNG8* PNG rw- 8-bit indexed with optional binary transparency

看到已经有了

最后可以通过下面方式看看

[root@jstuw8tpu3gud9 image_convert2]# identify -list configure | grep DELEGATES
DELEGATES mpeg jng jpeg png ps zlib
[root@jstuw8tpu3gud9 image_convert2]# convert --version
Version: ImageMagick 7.0.7-30 Q16 x86_64 2018-05-07 https://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: https://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP
Delegates (built-in): jng jpeg ltdl png zlib


此时php 程序 还有 问题 还是报 png 的问题 思前想后 最后决定重启一下apache 【解决了!!!】


所以一定要重启 apache 才能让 imagick 起作用



参考 http://php.net/manual/en/book.imagick.php

Any Problems let me Know ! Thanks !!!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值