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数据库开发知多少
Oct 09 PHP
PHP集成FCK的函数代码
Sep 27 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
Nov 05 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
laravel中Redis队列监听中断的分析
Sep 14 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实现scws中文分词搜索的方法
2015/12/25 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
python urllib爬取百度云连接的实例代码
2017/06/19 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
五月的鲜花活动方案
2014/08/21 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
爱国主义电影观后感
2015/06/18 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python