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 相关文章推荐
php4的session功能评述(一)
Oct 09 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
php魔术变量用法实例详解
Nov 13 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
PHP文件上传操作实例详解
Sep 27 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 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
PL-880隐藏功能
2021/03/01 无线电
用PHP调用数据库的存贮过程
2006/10/09 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
详解python eval函数的妙用
2017/11/16 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
中国网上药店领导者:1药网
2017/02/16 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
会计主管岗位职责
2014/01/03 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
绿色城市实施方案
2014/03/19 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Golang 字符串的常见操作
2022/04/19 Golang
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库