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 相关文章推荐
请php正则走开
Mar 15 PHP
php抓取页面的几种方法详解
Jun 17 PHP
php读取mysql的简单实例
Jan 15 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
php求数组全排列,元素所有组合的方法
May 05 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
PHP编写文件多服务器同步程序
Jul 02 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 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强制下载PDF文件示例
2014/01/17 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
PHP CURL使用详解
2019/03/21 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
详解webpack-dev-server的简单使用
2018/04/02 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
微信小程序实现分页加载效果
2020/11/19 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python实现word 2007文档转换为pdf文件
2018/03/15 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
法律专业自我鉴定
2013/10/03 职场文书
自主实习接收函
2014/01/13 职场文书
三个儿子教学反思
2014/02/03 职场文书
21岁生日感言
2014/02/27 职场文书
境外导游求职信
2014/02/27 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
商铺租赁意向书
2014/04/01 职场文书
个人委托书如何写
2014/09/25 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
MySQL数据库查询之多表查询总结
2022/08/05 MySQL