溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用PHP在對(duì)圖片背景進(jìn)行處理

發(fā)布時(shí)間:2020-12-14 15:39:47 來源:億速云 閱讀:192 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)利用PHP在對(duì)圖片背景進(jìn)行處理,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

使用imagecreate()和imageCreateTrueColor()兩個(gè)函數(shù)去創(chuàng)建畫布資源。但如果需要對(duì)自己已有的圖片進(jìn)行處理,只要將這個(gè)圖片作為畫布資源即可,也就是我們所說的創(chuàng)建圖片背景。可以通過下面介紹的幾個(gè)函數(shù),打開服務(wù)器或網(wǎng)絡(luò)文件中已經(jīng)存在的GIF、JPEG和PNG圖像,返回一個(gè)圖像標(biāo)識(shí)符,代表了從給定的文件名取得的圖像作為操作的背景資源。它們的原型如下所示,它們?cè)谑r(shí)都會(huì)返回一個(gè)空字符串,并且輸出一條錯(cuò)誤信息。

代碼如下:

  resource  imagecreatefromjpeg(string $filename)           //從JPEG文件或URL新建一圖像
  resource  imagecreatefrompng(string $filename)             //從PNG文件或URL新建一圖像
  resource  imagecreatefromgif(string $filename)            //從GIF文件或URL新建一圖像

  不管使用哪個(gè)函數(shù)創(chuàng)建的圖像資源,用完以后都需要使用imagedestroy()函數(shù)進(jìn)行銷毀。再有就是圖片格式對(duì)應(yīng)的問題,任何一種方式打開的圖片資源都可以保存為同一種格式。例如,對(duì)于使用imagecreatefromjpeg()函數(shù)創(chuàng)建的圖片資源,可以使用imagepng()函數(shù)以PNG格式將圖像輸出到瀏覽器或文件。當(dāng)然最好是打開的是哪種格式的圖片,就保存成對(duì)應(yīng)的圖片格式。如果要做到這一點(diǎn),我們還需要先認(rèn)識(shí)一下getimagesize()函數(shù),通過圖片名稱就可以獲取圖片的類型、寬度和高度等。該函數(shù)的原型如下所示:

 代碼如下:

  array  getimagesize(string filename[,array &imageinfo])             //獲取圖片的大小和類型

  如果不能訪問filename指定的圖像或者其不是有效圖像,該函數(shù)將返回FALSE并產(chǎn)生一條E_WARNING級(jí)的錯(cuò)誤。如果不出錯(cuò),getimagesize()返回一個(gè)具有四個(gè)單元的數(shù)組,索引0包含圖像寬度的像素值,索引1包含圖像高度的索引值,索引2是圖像類型的標(biāo)記:1=GIF,2=JPG,3=PNG,4=SWF等,索引3是文本字符串,內(nèi)容為“height=”yyy”  width=”xxx””,可以直接用于<IMG>標(biāo)記。如下所示:

<?php
list($width,$height,$type,$attr) = getimagesize("image/brophp.jpg");echo "<img src='image/brophp.jpg'".$attr.">";?>

  下面的例子聲明一個(gè)image()函數(shù),可以打開GIF、JPG和PNG中任意格式的圖片,并在圖片的中間加上一個(gè)字符串后,保存成原來的格式(文字水印)。在以后的開發(fā)中,如果需要同樣的操作(打開的是哪種格式的圖片,也保存成對(duì)應(yīng)格式的文件),可以參與本例的模式,代碼如下所示:

<?php
    //向不同格式的圖片中間畫一個(gè)字符串(也是文字水印)
    function image($filename,$string){
        //獲取圖片的屬性,第一個(gè)寬度,第二個(gè)高度,類型1=>gif,2=>jpeg,3=>png
        list($width,$height,$type) = getimagesize($filename);
        //可以處理的圖片類型
        $types = array(1=>"gif",2=>"jpeg",3=>"png",);
        //通過圖片類型去組合,可以創(chuàng)建對(duì)應(yīng)圖片格式的,創(chuàng)建圖片資源的GD庫(kù)函數(shù)
        $createfrom = "imagecreatefrom".$types[$type];
        //通過“變量函數(shù)”去打?qū)?yīng)的函數(shù)去創(chuàng)建圖片的資源
        $image = $createfrom($filename);
        //設(shè)置居中字體的X軸坐標(biāo)位置
        $x = ($width-imagefontwidth(5)*strlen($string))/2;
        //設(shè)置居中字體的Y軸坐標(biāo)位置
        $y = ($height-imagefontheight(5))/2;
        //設(shè)置字體的顏色為紅色
        $textcolor = imagecolorallocate($image, 255, 0, 0);
        //向圖片畫一個(gè)指定的字符串
        imagestring($image, 5, $x, $y, $string, $textcolor);
        //通過圖片類型去組合保存對(duì)應(yīng)格式的圖片函數(shù)
        $output = "image".$types[$type];
        //通過變量函數(shù)去保存對(duì)應(yīng)格式的圖片
        $output($image,$filename);
        imagedestroy($image);
    }
    image("brophp.gif","GIF");
    image("brophp.jpg", "JPEG");
    image("brophp.png", "PNG");
?>

看完上述內(nèi)容,你們對(duì)利用PHP在對(duì)圖片背景進(jìn)行處理有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI