PHP利用imagick把PDF轉成PNG

jopen 11年前發布 | 38K 次閱讀 imagick 圖形/圖像處理

需求:通過PHP把PDF生成PNG圖片,一般用在在線閱讀瀏覽用的。


Windows下實現:

1.PHP的DLL擴展下載地址:http://valokuva.org/outside-blog-content/imagick-windows-builds/
2.里面有用于PHP不同的版本DLL,要注意和你的版本相同
3.把下載好的DLL改名成 php_imagick.dll(我是下載的php_imagick_dyn-Q16.dll)然后放入到PHP安裝目錄中的EXT。
4.修改php.ini 增加 "extension=php_imagick.dll" 不包含雙引號哦!
5.重啟apache后寫個phpinfo后搜索“imagick”關鍵字,有的話就代表安裝好了。
6.最后要安裝ghostscript.exe,要不然會報錯的。下載地址:http://downloads.ghostscript.com/public/gs904w32.exe
7.最后執行PHP腳本即可,根據需求自己修改。

Linux下實現:

1 下載ImageMagick-6.7.1-6

wget ftp://ftp.u-aizu.ac.jp/pub/graphics/image/ImageMagick/imagemagick.org/ImageMagick.tar.gz
2 解壓
# tar -xzvf ImageMagick.tar.gz
3 編譯安裝
# cd  ImageMagick-6.7.1-6 # ./configure -prefix=/usr/local/imagemagick 
-enable-lzw -with-modules && make && make install
4.查看一下
# /usr/local/imagemagick/bin/convert -version
5.測試一下
# pwd /root/test/ImageMagick-6.7.1-6 # cd images/ # /usr/local/imagemagick/bin/convert 
-sample 25%x25% wizard.jpg test.jpg
6.開始裝imagick的PHP擴展(注意:安裝imagick擴展時需要PHP >= 5.1.3,ImageMagick >= 6.2.4)

7.獲取imagick(最新版本獲取:http://pecl.php.net/package/imagick)

# wget http://pecl.php.net/get/imagick-3.1.0RC1.tgz
http://code.google.com/p/lnamp-web-server/downloads/detail?name=imagick-3.1.0b1.tgz&can=2&q=label%3Aimagick


8.解壓

# tar -zxvf imagick-3.1.0RC1.tgz apt-get install php5-dev
9.phpize
# cd imagick-3.1.0RC1 # phpize
10.配置編譯
# ./configure # make&&make install
注意:編譯成功后會在php 擴展目錄生成imagick.so,然后再php.ini里面 加上“extension="/usr/lib/php5/20090626+lfs/imagick.so"”
 

11.重啟apache

/etc/init.d/apache2 restart


12.也可以使用PECL方式安裝

1) sudo apt-get install libmagick-dev
2) sudo apt-get install php-pear php5-dev
3) sudo pecl install imagick
 

PHP代碼調用:

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;
}

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!