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脚本加密专家php解密算法
Sep 13 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
在html文件中也可以执行php语句的方法
Apr 09 PHP
php无限分类使用concat如何实现
Nov 05 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
详解PHP序列化和反序列化原理
Jan 15 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
PHP中的self关键字详解
Jun 23 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 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 开发环境配置(Zend Server安装)
2010/04/28 PHP
模板引擎正则表达式调试小技巧
2011/07/20 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
关于js类的定义
2011/06/28 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
vue ssr 指南详读
2018/06/29 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
Python自定义类的数组排序实现代码
2016/08/28 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
迪士尼法国在线商店:shopDisney FR
2020/12/03 全球购物
土木工程毕业生自荐信
2013/11/12 职场文书
全民健身日活动方案
2014/01/29 职场文书
公司面试感谢信
2014/02/01 职场文书
销售会计岗位职责
2014/03/15 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
售票员岗位职责
2015/02/15 职场文书
评职称个人总结
2015/03/05 职场文书
活动经费申请报告
2015/05/15 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
导游词之杭州西湖
2019/09/19 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android