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下使用无限生命期Session的方法
Mar 16 PHP
使用PHP获取网络文件的实现代码
Jan 01 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
php curl_init函数用法
Jan 31 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
PHP时间和日期函数详解
May 08 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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 base64编码后解码乱码的解决办法
2014/06/19 PHP
php事务处理实例详解
2014/07/11 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
一段实时更新的时间代码
2006/07/07 Javascript
JavaScript 中的事件教程
2007/04/05 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
校园之声广播稿
2014/01/31 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
期末学生评语大全
2014/04/24 职场文书
清洁工岗位职责
2015/02/13 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
2019经典广告词集锦!
2019/07/02 职场文书