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的5个入手程序
Nov 23 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
python help函数实例用法
2020/12/06 Python
ASP.NET Core中的配置详解
2021/02/05 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
六年级学生评语
2014/04/22 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
三行辞职书范文
2015/02/26 职场文书
迎新生晚会主持词
2015/06/30 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang
OpenCV全景图像拼接的实现示例
2021/06/05 Python
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL