转载地址:https://blog.csdn.net/qq_15758827/article/details/104778873
1、安装ImageMagick
1) 安装图片支持工具
yum install libjpeg* libpng* freetype* gd*
2) 下载源码
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
3) 开始编译、安装
tar -xzvf ImageMagick.tar.gz
cd ImageMagick-7.0.10-0 #版本可能会变动
./configure --prefix=/usr/local/imagemagick
make && make install
4) 创建连接(非必要,如果需要在运行convert命令处理图片可以添加)
cd /usr/bin
ln -s /usr/local/imagemagick/bin/convert convert
5) 检查是否安装成功
/usr/local/imagemagick/bin/convert -version
或者 convert -version
image.png
2、安装php扩展imagick
1) 下载源码
wget http://pecl.php.net/get/imagick-3.4.3.tgz #最新版本2017年2月1号发布,3.4.3.......
2) 解压、编译安装
每一行都是单独执行的
tar -xzvf imagick-3.4.3.tgz
cd imagick-3.4.3
/usr/bin/phpize #这里也是要执行的
./configure --with-php-config=/usr/bin/php-config --with-imagick=/usr/local/imagemagick
make && make install
image.png
3) 更改php.ini加入so文件
vim /etc/php.ini #打开php.ini文件
extension = imagick.so #在末尾加入这句
image.png
如果你的php.ini配置文件在别的位置则 修改相应位置
image.png
4) 重启php,检查是否安装成功
php -m | grep imagick
5) 安装ghostscript
yum -y install ghostscript
3、PHP->PDF转图片
/**
* 将pdf文件转化为多张png图片
* @param string $pdf pdf所在路径 (/www/pdf/abc.pdf pdf所在的绝对路径)
* @param string $path 新生成图片所在路径 (/www/pngs/)
*
* @return array|bool
*/
function pdf2png($pdf, $path)
{
if (!extension_loaded('imagick')) {
return false;
}
if (!file_exists($pdf)) {
return false;
}
$im = new Imagick();
$im->setResolution(120, 120); //设置分辨率 值越大分辨率越高
$im->setCompressionQuality(100);
$im->readImage($pdf);
foreach ($im as $k => $v) {
$v->setImageFormat('png');
$fileName = $path . md5($k . time()) . '.png';
if ($v->writeImage($fileName) == true) {
$return[] = $fileName;
}
}
return $return;
}
/**
* 将pdf转化为单一png图片
* @param string $pdf pdf所在路径 (/www/pdf/abc.pdf pdf所在的绝对路径)
* @param string $path 新生成图片所在路径 (/www/pngs/)
*
* @throws Exception
*/
function pdf2png2($pdf, $path)
{
try {
$im = new Imagick();
$im->setCompressionQuality(100);
$im->setResolution(120, 120);//设置分辨率 值越大分辨率越高
$im->readImage($pdf);
$canvas = new Imagick();
$imgNum = $im->getNumberImages();
//$canvas->setResolution(120, 120);
foreach ($im as $k => $sub) {
$sub->setImageFormat('png');
//$sub->setResolution(120, 120);
$sub->stripImage();
$sub->trimImage(0);
$width = $sub->getImageWidth() + 10;
$height = $sub->getImageHeight() + 10;
if ($k + 1 == $imgNum) {
$height += 10;
} //最后添加10的height
$canvas->newImage($width, $height, new ImagickPixel('white'));
$canvas->compositeImage($sub, Imagick::COMPOSITE_DEFAULT, 5, 5);
}
$canvas->resetIterator();
$canvas->appendImages(true)->writeImage($path . microtime(true) . '.png');
} catch (Exception $e) {
throw $e;
}
}
网友评论