PHP使用imagick读取PDF生成png缩略图的两种方法


Posted in PHP onMarch 20, 2014

一、ImageMagick是什么
ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过185种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。
二、php_imagick什么
一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能。
三、PDF生成png缩略图的两种方法
第一种:

/**
* PDF2PNG   
* @param $pdf  待处理的PDF文件
* @param $path 待保存的图片路径
* @param $page 待导出的页面 -1为全部 0为第一页 1为第二页
* @return      保存好的图片路径和文件名
*/
 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->thumbnailImage(200, 100, true); // 改变图像的大小
   $im->scaleImage(200,100,true); //缩放大小图像
   $filename = $path."/". time().'.png';
   if($im->writeImage($filename) == true)
   {  
      $Return  = $filename;  
   }  
   return $Return;  
}  
$s = pdf2png('file/1371273225-ceshi_ppt.pdf','images'); 
echo '<div align="center"><img src="'.$s.'"></div>';

第二种:
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 $Key => $Var){
     $Var->setImageFormat('png');
     $Filename = $Path.'/'.md5($Key.time()).'.png';
     if($Var->writeImage($Filename) == true){
       $Return[] = $Filename;
     }
   }
   return $Return;
}
PHP 相关文章推荐
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
PHP 柱状图实现代码
Dec 04 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php导出excel格式数据问题
Mar 11 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
PHP多进程编程实例
Oct 15 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 #PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 #PHP
php实现保存submit内容之后禁止刷新
Mar 19 #PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 #PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 #PHP
PHP中获取时间的下一周下个月的方法
Mar 18 #PHP
php读取目录所有文件信息dir示例
Mar 18 #PHP
You might like
PHP 7.0新增加的特性介绍
2017/06/08 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
python实现定时发送qq消息
2019/01/18 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
生产部管理制度
2014/01/31 职场文书
英语国培研修感言
2014/02/13 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
三人合伙协议书范本
2014/10/29 职场文书
2014年科协工作总结
2014/12/09 职场文书
护士个人年度总结范文
2015/02/13 职场文书
班主任开场白
2015/06/01 职场文书
军训新闻稿范文
2015/07/17 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
装修安全责任协议书
2016/03/22 职场文书
详解python网络进程
2021/06/15 Python