中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP+ImageMagick如何將PDF轉成圖片

發布時間:2022-01-20 09:19:04 來源:億速云 閱讀:356 作者:清風 欄目:編程語言

這篇文章將為大家詳細講解有關PHP+ImageMagick如何將PDF轉成圖片,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

                           

ImageMagick安裝

ImageMagick是一個免費的創建、編輯、合成圖片的軟件。它可以讀取、轉換、寫入多種格式的圖片。圖片切割、顏色替換、各種效果的應用,圖片的旋轉、組合,文本,直線,多邊形,橢圓,曲線,附加到圖片伸展旋轉。ImageMagick是免費軟件:全部源碼開放,可以自由使用,復制,修改,發布,它遵守GPL許可協議,可以運行于大多數的操作系統,ImageMagick的大多數功能的使用都來源于命令行工具。

PHP中要使用ImageMagick,需要安裝imagick擴展,imagickgd擴展類似,主要用于圖像處理,但是imagick的功能更強大。下面簡單介紹imagick在兩種常用環境中的安裝方法。

CentOS 7中安裝

在CentOS中可以直接使用Yum進行安裝,除了安裝ImageMagick,還要安裝它的兩個依賴ImageMagick-develImageMagick-perl

yum install -y ImageMagick ImageMagick-devel ImageMagick-perl

接著使用pecl安裝擴展。找到PHP安裝目錄下的pecl,例如PHP安裝在/usr/local/php74目錄中,則pecl一般在/usr/local/php74/bin目標中,執行命令:

/usr/local/php74/bin/pecl install imagick

即可使用pecl自動下載并安裝ImageMagick,最后在php.ini中添加

extension=imagick.so

即可啟用擴展。

如果你需要檢查一下擴展有沒有安裝成功,可以執行一下命令

php -m|grep imagick

如果輸出imagick,說明擴展安裝成功。


題外話 :如果你不知道PHP使用的是哪個php.ini配置文件,可以執行一下以下命令

php74 -i|grep ini

找到”Loaded Configuration File”那行,就知道PHP使用的是哪個配置文件了。php -i命令
作用類似于我們使用phpinfo()函數查看PHP的相關信息。


Docker安裝

容器中的PHP安裝擴展,推薦使用Github上的docker-php-extension-installer,這是一個Shell腳本,可以幫我們解決擴展的依賴問題,安裝擴展后還會自動清除沒用的文件。我們只需要在Dockerfile中加入這個腳本即可,下面是官方的示例:

FROM php:7.2-cli
# 從Github上下載docker-php-extension-installer腳本
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# 添加可執行權限并安裝擴展
RUN chmod +x /usr/local/bin/install-php-extensions && \
    install-php-extensions gd xdebug imagick

這樣構建出來的鏡像就安裝好所需要的擴展了。


題外話:在國內網絡環境下,使用docker-php-extension-installer安裝擴展經常會出現超時問題,建議使用外網的VPS構建鏡像,上傳到DockerHub或者其它私有倉庫后,再拉到本地網絡使用。可使用便宜的良心云,或者Vultr這種支持按時計費的VPS。


PDF轉圖片

代碼示例:

// 實例化imagick對象
$im = new imagick();
$im->setResolution(150, 150);
$im->setCompressionQuality(100);
$im->readImageBlob($fileContent);
$im->setImageFormat('jpg');
$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);

header("Content-type: image/jpeg");
echo $im->getImageBlob();

代碼解讀:

$im->setResolution(150, 150);

用于設置圖像的分辨率。這個函數并不改變圖像的實際分辨率,只是在讀取或創建圖像之前將其設置在Imagick對象中,這個函數需要在讀取圖像或創建圖像之前調用。
這個函數接收兩個參數,分別是橫向分辨率和縱向分辨率,默認值是72*72。為了保持圖像的寬高比,這兩個參數值應該一樣,默認值轉換出來的圖像不夠清晰,建議使用兩倍或三倍值,但同時圖片的大小也會變大。


$im->setCompressionQuality(100);

設置圖像的壓縮質量,默認值為0;傳入的參數值應為1-100,對于JPG格式圖片,值越小,圖像體積越小,同時清晰度也較低;但是對于PNG圖片,這個結論貌似不成立,當值小于90時,圖片體積反而越大,所以在轉換為PNG圖片格式時,保持默認值即可。


$im->readImageBlob($fileContent);

直接加載PDF文件的二進制內容,也可以使用readImage($filename)函數讀取保存好的PDF文件。


$im->setImageFormat('jpg');

設置要生成的圖像的格式,如jpg,png等,


$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);

設置圖像背景色為白色,去掉圖像的alpha通道,將所有圖像合并為一層,如果不執行這些操作,轉換出來的圖像背景會是黑色的,如下圖:

PHP+ImageMagick如何將PDF轉成圖片


header("Content-type: image/png");
echo $im->getImageBlob();

獲取轉換生成圖像的二進制數據,輸出到客戶端供下載;如果需要保存到文件,可以使用writeImage($filename)函數。

php有什么特點

1、執行速度快。2、具有很好的開放性和可擴展性。3、PHP支持多種主流與非主流的數據庫。4、面向對象編程:PHP提供了類和對象。5、版本更新速度快。6、具有豐富的功能。7、可伸縮性。8、功能全面,包括圖形處理、編碼與解碼、壓縮文件處理、xml解析等。

關于“PHP+ImageMagick如何將PDF轉成圖片”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西贡区| 清远市| 云浮市| 依安县| 全椒县| 孟津县| 泰兴市| 凌源市| 龙江县| 内江市| 湖南省| 宜丰县| 双鸭山市| 比如县| 怀化市| 综艺| 安顺市| 浦东新区| 邵武市| 新津县| 中西区| 青阳县| 清苑县| 洪湖市| 宜君县| 台北县| 岱山县| 天门市| 永寿县| 美姑县| 佛坪县| 桂东县| 阳山县| 栖霞市| 连城县| 抚顺市| 珲春市| 双峰县| 绥中县| 资阳市| 明溪县|