PHP中使用imagick实现把PDF转成图片

PHP Manual里,对imagick的描述,真的是简洁,每个成员函数,点击打开就看到如下文本:

复制代码 代码如下:

Warning
This function is currently not documented; only its argument list is available.

刚才解决了PHP加载问题后,对图片的处理相当方便,网上随便找了一段:

复制代码 代码如下:

<?php
Header("Content-type: image/jpeg");   
/**
* 缩小图片尺寸.
*
* @param $image 待处理的二进制图片
* @param $width 处理后图片尺寸的宽度(px)
* @param $height 处理后图片尺寸的高度(px)
* @param $crop 是否裁剪图片
*
* @return 处理好的二进制图片
*/
function resize($image, $width, $height, $crop)
{
   $imagick = new Imagick($image);
   $w = $imagick->getImageWidth();
   $h = $imagick->getImageHeight();
   if ($w > $width || $h > $height)
   {
      if ($crop)
      {
         $imagick->cropThumbnailImage($width, $height);
      }
      else
      {
         $imagick->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 1, true);
      }
   }
   $processed_image = $imagick->getImageBlob();
   return $processed_image;
}
$s=resize("123.jpg", 60, 40, 1);
echo $s;
?>

但我要用这个扩展做的,是将PDF转成PNG。PDF哦!

复制代码 代码如下:

<?php
/**
* PDF2PNG
* @param $pdf  待处理的PDF文件
* @param $path 待保存的图片路径
* @param $page 待导出的页面 -1为全部 0为第一页 1为第二页
* @return      保存好的图片路径和文件名
*/
 function pdf2png($pdf,$path,$page=-1)

   if(!extension_loaded('imagick'))
   { 
       return false; 
   } 
   if(!file_exists($pdf))
   { 
       return false; 
   } 
   $im = new Imagick(); 
   $im->setResolution(120,120); 
   $im->setCompressionQuality(100);
   if($page==-1)  
      $im->readImage($pdf);
   else
      $im->readImage($pdf."[".$page."]");
   foreach ($im as $Key => $Var)
   { 
       $Var->setImageFormat('png'); 
       $filename = $path."/". md5($Key.time()).'.png';
       if($Var->writeImage($filename) == true)
       { 
           $Return[] = $filename; 
       } 
   } 
   return $Return; 

$path="images";//请确保当前目录下有这个文件夹,由于一直要用,所以就不加检测了
$s=pdf2png("test.pdf",$path);
$scount=count($s);
for($i=0;$i<$scount;$i++)
{
   echo "<div align=center><font color=red>Page ".($i+1)."</font><br><a href=\"".$s[$i]."\" target=_blank><img border=3 height=120 width=90 src=\"".$s[$i]."\"></a></div><p>";
}
?>

跟上面的差不多吧?可是总是不成功,readImage那边异常了,查看错误输出:

复制代码 代码如下:

PHP Fatal error:  Uncaught exception 'ImagickException' with message 'PostscriptDelegateFailed `test.pdf': No such file or directory'

百度谷歌了好久,最后灵机一动,不是说Postscript么?我找,我装。
这个Postscript,其实是GhostScript。
装好后,一跑,OK啦!

时间: 2015-01-24

PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法

一.概述: 本文详解了PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法. 首先要实现PHP使用php_imagick_st-Q8.dll类库,把JPG图片连接生成GIF动画图片,需要事先下载好php_imagick_st-Q8.dll动态链接库文件,并配置php.ini文件,启用php_imagick_st-Q8.dll. 二.配置方法如下: 1.将下载的php_imagick_st-Q8.dll文件放到PHP默认的扩展目录,也就是:php/ext/目录内: 2

PHP编程获取图片的主色调的方法【基于Imagick扩展】

本文实例讲述了PHP编程获取图片的主色调的方法.分享给大家供大家参考,具体如下: 代码中用到了php的图片扩展,所以使用之前,需要先安装PHP的Imagick扩展,具体安装如下(window下): windows7下安装php的imagick和imagemagick扩展教程 代码如下: <?php $average = new Imagick("./fruit/143511081321676_593.jpg"); $average->quantizeImage( 10, I

php实现高效获取图片尺寸的方法

本文实例讲述了php实现高效获取图片尺寸的方法.分享给大家供大家参考.具体分析如下: php 获取图片尺寸的方法我们可以使用 getimagesize 获取图片尺寸,但是效率是很低的,首先需要获取整个的图片信息,然后再进行操作,下面的例子更科学算法更好,我们一起来看看吧. 方法可以用于快速获取图片尺寸信息,获取JPEG格式图片的尺寸信息,并且不需要下载读取整个图片,经测试这个函数不是对所有JPEG格式的图片都有效. 1.获取JPEG格式图片的尺寸信息,代码如下: 复制代码 代码如下: <?php

php使用Imagick生成图片的方法

本文实例讲述了php使用Imagick生成图片的方法.分享给大家供大家参考.具体如下: 这里使用Imagick 生成图片 解决了图片写中文文字乱码问题,添加支持的字体 public function getPic(){ header('Content-Type: text/html; charset=utf-8'); $text = '中粮屯河(sh600737)';//中粮屯河(sh600737) $watermark = '305988103123zczcxzas'; $len = strl

php获取图片信息的方法详解

本文实例讲述了php获取图片信息的方法.分享给大家供大家参考,具体如下: getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串. <?php/* 1.jpg为你想获得其尺寸的图片 */ $arr = getimagesize("1.jpg

PHP实现获取图片颜色值的方法

本例讲述了PHP实现获取图片颜色值的方法,PHP获取图片颜色值检测图片主要颜色是通过imagecreatefromjpeg函数读取图片,再循环获得各个颜色值加以计算实现的. 具体代码如下: <?php $i=imagecreatefromjpeg("photo3.jpg");//测试图片,自己定义一个,注意路径 for ($x=0;$x<imagesx($i);$x++) { for ($y=0;$y<imagesy($i);$y++) { $rgb = imagec

php Imagick获取图片RGB颜色值

很多图片站点都会根据用户上传的图片检索出图片的主要颜色值,然后在通过颜色搜索相关的图片. 之前按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然后统计处RGB次数最多的值,这做法效率太低而且取到的RGB值不够精确.之后才发现使用Imagick的quantizeImage方法能够很方便的取到图片中平均的RGB值. $average = new Imagick("xiaocai.jpg"); $average->quantizeImage( 10, Imagick::COL

PHP中使用Imagick实现各种图片效果实例

imagick是一个功能强大的图像处理库.  说是翻译 其实就是简要介绍imagick 的主要功能的或者说是我觉得比较实用的功能函数的介绍 以及使用的例子.  因为本人的英语水平有限,所以采用比较通俗或者说比较贴近应用化的语言来描述.  先欣赏一组炫丽的效果: 偏置图像:   例子: 复制代码 代码如下: <?php  ini_set('display_errors',1);  header('Content-type: image/jpeg');  $image = new Imagick('

php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法

本文实例讲述了php_imagick实现图片剪切.旋转.锐化.减色或增加特效的方法.分享给大家供大家参考.具体分析如下: 一个可以供PHP调用ImageMagick功能的PHP扩展.使用这个扩展可以使PHP具备和ImageMagick相同的功能. ImageMagick是一套功能强大.稳定而且免费的工具集和开发包,可以用来读.写和处理超过185种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式.利用ImageMagick,你可以根据web应

php使用imagick模块实现图片缩放、裁剪、压缩示例

PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片 缩放 裁剪 复制代码 代码如下: /**  * 图片裁剪  * 裁剪规则:  *   1. 高度为空或为零   按宽度缩放 高度自适应  *   2. 宽度为空或为零  按高度缩放 宽度自适应  *      3. 宽度,高度到不为空或为零  按宽高比例等比例缩放裁剪  默认从头部居中裁剪  * @param number $width  * @param number $height  */ public function

PHP Imagick完美实现图片裁切、生成缩略图、添加水印

本文实例讲解了PHP使用Imagick 裁切.生成缩略图.添加水印自动检测和处理,支持gif,分享给大家供大家参考,具体内容如下 调用方式: include 'imagick.class.php'; $image = new lib_image_imagick(); $image->open('a.gif'); $image->resize_to(100, 100, 'scale_fill'); $image->add_text('1024i.com', 10, 20); $image-

PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF

给骨头系统开发的图像库的 imagick 部分 ,支持 gif , 完美支持裁切.生成缩略图.添加水印 . 支持按方位生成缩略图像, 如: // 把左上角优先 $image->resize_to(100, 100, 'north_west'); // 右边优先 $image->resize_to(100, 100, 'east'); ... 更多参数看源代码 原图 效果图: 调用方式: include 'imagick.class.php'; $image = new lib_image_im

PHP实现可添加水印与生成缩略图的图片处理工具类

本文实例讲述了PHP实现可添加水印与生成缩略图的图片处理工具类.分享给大家供大家参考,具体如下: ImageTool.class.php <?php class ImageTool { private $imagePath;//图片路径 private $outputDir;//输出文件夹 private $memoryImg;//内存图像 public function __construct($imagePath, $outputDir = null) { $this->imagePath

Java图片裁剪和生成缩略图的实例方法

一.缩略图 在浏览相册的时候,可能需要生成相应的缩略图. 直接上代码: public class ImageUtil { private Logger log = LoggerFactory.getLogger(getClass()); private static String DEFAULT_PREVFIX = "thumb_"; private static Boolean DEFAULT_FORCE = false;//建议该值为false /** * <p>Tit

php动态生成缩略图并输出显示的方法

本文实例讲述了php动态生成缩略图并输出显示的方法.分享给大家供大家参考.具体如下: 调用方法: <img src="thumbs.php?filename=photo.jpg&width=100&height=100"> 此代码可以为大图片动态生成缩略图显示,图片在内存中生成,不在硬盘生成真实文件 thumbs.php文件如下: <?php $filename= $_GET['filename']; $width = $_GET['width'];

深入分析WPF客户端读取高清图片卡以及缩略图的解决方法详解

在Ftp上传上,有人上传了高清图片,每张图片大约2M.如果使用传统的BitmapImage类,然后绑定 Source 属性的方法,有些电脑在首次会比较卡,一张电脑10秒,4张大约会卡40秒. 所以我先异步的下载图片,得到downloadFileStream对象,然后绑定到BitmapImage类上.例如:System.Windows.Controls.Image photo = new Image{    Width = 100,    Height = 100,    Margin = new

php实现在新浪云中使用imagick生成缩略图并上传的方法

本文实例讲述了php实现在新浪云中使用imagick生成缩略图并上传的方法.分享给大家供大家参考,具体如下: imagick是一款php的图像处理插件了我们可以使用imagick来进行许多的一些操作了,下面我们来看一篇关于php在新浪云中使用imagick的方法吧,具体的细节如下. php在新浪云中使用imagick生成缩略图并上传到Storage的方法 <?php //缩略图 $tmpFile ='http://XXXX.com/original.jpg' ; list($width, $he

Go语言图片处理和生成缩略图的方法

本文实例讲述了Go语言图片处理和生成缩略图的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "fmt"     "os"     "image"     "image/color"     "image/draw"     "image/jpeg" ) func main() {     f1, err := os

asp.net图片上传生成缩略图的注意事项

bitmap.Save(imgPath,ImageFormat.Jpeg);   //这是保存缩略图的一段代码,其中的ImageFormat.Jpeg一定不能省略,即使你保存的文件本来就是jpg格式的,也不能去掉.因为如果去掉的话,生成的缩略图比原始图片还要大! //另外,imgPath必须首先创建,否则会产生GDI+的一般性错误. path=System.Web.HttpContext.Current.Server.MapPath(path); 使用if(!System.IO.Director

c#多图片上传并生成缩略图的实例代码

前台代码: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&q