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入门速成教程
Mar 19 PHP
php实现mysql同步的实现方法
Oct 21 PHP
用php实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php curl post 时出现的问题解决
Jan 30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
php 的反射详解及示例代码
Aug 25 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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
简单的页面缓冲技术
2006/10/09 PHP
E路文章系统PHP
2006/12/11 PHP
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
js实现一键复制功能
2017/03/16 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python import自定义模块方法
2015/02/12 Python
python实现红包裂变算法
2016/02/16 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
python检索特定内容的文本文件实例
2018/06/05 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
python3判断IP地址的方法
2021/03/04 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
MongoDB支持的索引类型
2022/04/11 MongoDB