首頁  >  文章  >  後端開發  >  php多張圖片合併方法分享

php多張圖片合併方法分享

小云云
小云云原創
2018-02-27 10:32:372653瀏覽

本文主要和大家分享php多張圖片合併方法,PHP imagecopymerge 函數可以支援兩個影像疊加時,設定疊加的透明度,imagecopy 函數則不支援疊加透明,實際上,PHP內部原始碼裡,imagecopymerge在透明度參數為100時,直接呼叫imagecopy函數。
然而,imagecopy函數拷貝時可以保留png圖像的原始透明信息,而imagecopymerge卻不支持圖片的本身的透明拷貝,
比較羅嗦,以一個實際的例子來演示以下:
在影像上打上LOGO浮水印。
一般來說,logo由圖示和網址組成,例如是一個透明的png圖像,logo.png ,
現在如果要把這個logo打到圖片上,
使用imagecopymerge函數,可以實現打上透明度為30%的淡淡的水印圖標,但logo本身的png就會變得像IE6不支持png透明那樣,背景不透明了,如果使用imagecopy函數,可以保留logo本身的透明信息,但無法實現30%的淡淡水印疊加,
php官方有人實現的辦法:使用imagecopymerge_alpha 函數可以直接實現這個兩個函數的功能,保留png自身透明的同時,實現自定義透明度疊加,不過該函數的內部使用$opacity = 100 - $opacity; 來實現透明度,好像剛好反了

$dst = imagecreatefromstring(file_get_contents($dst_path));
$src = imagecreatefromstring(file_get_contents($src_path));
imagecopy($dst, $src, 100, 100, 0, 0, 100, 100);//完成合并
  function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){
        $opacity=$pct;
        // getting the watermark width
        $w = imagesx($src_im);
        // getting the watermark height
        $h = imagesy($src_im);
        
        // creating a cut resource
        $cut = imagecreatetruecolor($src_w, $src_h);
        // copying that section of the background to the cut
        imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
        // inverting the opacity
        $opacity = 100 - $opacity;
        
        // placing the watermark now
        imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
        imagecopymerge($dst_im, $cut, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $opacity);
    }

相關推薦:

php實作微信中的圖片合併-九宮格圖片

以上是php多張圖片合併方法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn