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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
php阳历转农历优化版
Aug 08 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
CI框架附属类用法分析
Dec 26 PHP
php数组和链表的区别总结
Sep 20 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
elementUI多选框反选的实现代码
2019/04/03 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python爬虫代理IP池实现方法
2017/01/05 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
Python requests获取网页常用方法解析
2020/02/20 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
酒店总经理工作职责
2013/12/13 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
无私奉献演讲稿
2014/09/04 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
英文邀请函
2015/02/02 职场文书
python编写五子棋游戏
2021/05/25 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server