PHP+ImageMagick如何將PDF轉(zhuǎn)成圖片

這篇文章將為大家詳細(xì)講解有關(guān)PHP+ImageMagick如何將PDF轉(zhuǎn)成圖片,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),番禺企業(yè)網(wǎng)站建設(shè),番禺品牌網(wǎng)站建設(shè),網(wǎng)站定制,番禺網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,番禺網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

                           

ImageMagick安裝

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

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

CentOS 7中安裝

在CentOS中可以直接使用Yum進(jìn)行安裝,除了安裝ImageMagick,還要安裝它的兩個(gè)依賴ImageMagick-develImageMagick-perl。

yum install -y ImageMagick ImageMagick-devel ImageMagick-perl

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

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

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

extension=imagick.so

即可啟用擴(kuò)展。

如果你需要檢查一下擴(kuò)展有沒(méi)有安裝成功,可以執(zhí)行一下命令

php -m|grep imagick

如果輸出imagick,說(shuō)明擴(kuò)展安裝成功。


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

php74 -i|grep ini

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


Docker安裝

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

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/
# 添加可執(zhí)行權(quán)限并安裝擴(kuò)展
RUN chmod +x /usr/local/bin/install-php-extensions && \
    install-php-extensions gd xdebug imagick

這樣構(gòu)建出來(lái)的鏡像就安裝好所需要的擴(kuò)展了。


題外話:在國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下,使用docker-php-extension-installer安裝擴(kuò)展經(jīng)常會(huì)出現(xiàn)超時(shí)問(wèn)題,建議使用外網(wǎng)的vps構(gòu)建鏡像,上傳到DockerHub或者其它私有倉(cāng)庫(kù)后,再拉到本地網(wǎng)絡(luò)使用。可使用便宜的良心云,或者Vultr這種支持按時(shí)計(jì)費(fèi)的VPS。


PDF轉(zhuǎn)圖片

代碼示例:

// 實(shí)例化imagick對(duì)象
$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);

用于設(shè)置圖像的分辨率。這個(gè)函數(shù)并不改變圖像的實(shí)際分辨率,只是在讀取或創(chuàng)建圖像之前將其設(shè)置在Imagick對(duì)象中,這個(gè)函數(shù)需要在讀取圖像或創(chuàng)建圖像之前調(diào)用。
這個(gè)函數(shù)接收兩個(gè)參數(shù),分別是橫向分辨率和縱向分辨率,默認(rèn)值是72*72。為了保持圖像的寬高比,這兩個(gè)參數(shù)值應(yīng)該一樣,默認(rèn)值轉(zhuǎn)換出來(lái)的圖像不夠清晰,建議使用兩倍或三倍值,但同時(shí)圖片的大小也會(huì)變大。


$im->setCompressionQuality(100);

設(shè)置圖像的壓縮質(zhì)量,默認(rèn)值為0;傳入的參數(shù)值應(yīng)為1-100,對(duì)于JPG格式圖片,值越小,圖像體積越小,同時(shí)清晰度也較低;但是對(duì)于PNG圖片,這個(gè)結(jié)論貌似不成立,當(dāng)值小于90時(shí),圖片體積反而越大,所以在轉(zhuǎn)換為PNG圖片格式時(shí),保持默認(rèn)值即可。


$im->readImageBlob($fileContent);

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


$im->setImageFormat('jpg');

設(shè)置要生成的圖像的格式,如jpg,png等,


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

設(shè)置圖像背景色為白色,去掉圖像的alpha通道,將所有圖像合并為一層,如果不執(zhí)行這些操作,轉(zhuǎn)換出來(lái)的圖像背景會(huì)是黑色的,如下圖:

PHP+ImageMagick如何將PDF轉(zhuǎn)成圖片


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

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

php有什么特點(diǎn)

1、執(zhí)行速度快。2、具有很好的開放性和可擴(kuò)展性。3、PHP支持多種主流與非主流的數(shù)據(jù)庫(kù)。4、面向?qū)ο缶幊蹋篜HP提供了類和對(duì)象。5、版本更新速度快。6、具有豐富的功能。7、可伸縮性。8、功能全面,包括圖形處理、編碼與解碼、壓縮文件處理、xml解析等。

關(guān)于“PHP+ImageMagick如何將PDF轉(zhuǎn)成圖片”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前名稱:PHP+ImageMagick如何將PDF轉(zhuǎn)成圖片
鏈接地址:http://muchs.cn/article18/piesdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、面包屑導(dǎo)航、品牌網(wǎng)站制作全網(wǎng)營(yíng)銷推廣、Google、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)