日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 网页 透明背景图片,php 处理透明背景的图片时的问题

發布時間:2025/3/15 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 网页 透明背景图片,php 处理透明背景的图片时的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PHP圖象處理之透明背景的gif和png圖片的一些問題

1,直接讀取有透明背景的PNG格式文件,然后直接輸出,背景變成了黑色,gif則沒有這種情況。

解決方法:使用 imagesavealpha ($image, true),此函數是針對png格式的.

PHP

$im=imagecreatefrompng("demo_1.png");

imagesavealpha($im, true);//設置標記以在保存 PNG 圖像時保存完整的 alpha 通道信息。

header('Content-type: image/png');

imagepng($im);

imagedestroy($im);

?>

1

2

3

4

5

6

7

$im=imagecreatefrompng("demo_1.png");

imagesavealpha($im,true);//設置標記以在保存 PNG 圖像時保存完整的 alpha 通道信息。

header('Content-type: image/png');

imagepng($im);

imagedestroy($im);

?>

注意一點:不是所有的瀏覽器都支持 alpha 通道,如果在你的瀏覽器上碰到問題,試著用兼容 alpha 通道的瀏覽器(例如最新版的 Mozilla)重新加載腳本。

經測試,在IE中顯示效果不理想(但圖片仍然是透明的,保存下來看下就知道),背景變成了灰色.

2,在處理(比如縮小,剪切)有透明背景的gif和png圖片然后輸出時,圖片透明部分變成了黑色。

示例代碼如下:

PHP

$size = 300;

$image=imagecreatetruecolor($size, $size);//創建圖片

$back =imagecolorallocatealpha($image, 255, 255, 255,127);//加透明顏色,其實好象沒什么效果。-_-!

//讀取圖片

$im=imagecreatefrompng("demo_1.png");

imagecopyresampled($image,$im,10,20,0,0,128,128,128,128);//合拼圖片

header('Content-type: image/png');

imagepng($image);

imagedestroy($image);

?>

1

2

3

4

5

6

7

8

9

10

11

12

$size=300;

$image=imagecreatetruecolor($size,$size);//創建圖片

$back=imagecolorallocatealpha($image,255,255,255,127);//加透明顏色,其實好象沒什么效果。-_-!

//讀取圖片

$im=imagecreatefrompng("demo_1.png");

imagecopyresampled($image,$im,10,20,0,0,128,128,128,128);//合拼圖片

header('Content-type: image/png');

imagepng($image);

imagedestroy($image);

?>

效果是圖片背景變成了黑色。

解決辦法:使用imagecreate()而不是用imagecreatetruecolor()創建圖片。

因為imagecreatetruecolor()返回一個圖像標識符,代表了一幅大小為 x_size 和 y_size 的黑色圖像,

看下幫助手冊就知道了。

但這種方法仍然有bug,用于png時,png有部分顏色失去,變成了透明。

解決辦法:未知,有知道的告訴我一聲,在下先謝謝了。

3.php生產透明背景圖片

PHP

$wite = ImageColorAllocate($ni,255,255,255);//填充的背景色你可以重新指定,我用的是白色

imagefilledrectangle($ni, 0, 0, $dstW, $dstH, $wite);

ImageColorTransparent($ni, $wite);

?>

1

2

3

4

5

$wite=ImageColorAllocate($ni,255,255,255);//填充的背景色你可以重新指定,我用的是白色

imagefilledrectangle($ni,0,0,$dstW,$dstH,$wite);

ImageColorTransparent($ni,$wite);

?>

不過現在的方法還不是太理想。

2的bug解決辦法

PHP

//創建透明畫布

$im_out =imagecreatetruecolor($imgcreat_x, $imgcreat_y);

imagealphablending($im_out, true);

imagesavealpha($im_out, true);

$trans_colour = imagecolorallocatealpha($im_out, 0, 0, 0, 127);

imagefill($im_out, 0, 0, $trans_colour);

ImageCopyResized($im_out, $im, 0,0, 0, 0, $img_x, $img_y, $img[0], $img[1]);

imagepng($im_out);

?>

1

2

3

4

5

6

7

8

9

10

//創建透明畫布

$im_out=imagecreatetruecolor($imgcreat_x,$imgcreat_y);

imagealphablending($im_out,true);

imagesavealpha($im_out,true);

$trans_colour=imagecolorallocatealpha($im_out,0,0,0,127);

imagefill($im_out,0,0,$trans_colour);

ImageCopyResized($im_out,$im,0,0,0,0,$img_x,$img_y,$img[0],$img[1]);

imagepng($im_out);

?>

以下是處理透明的3個必須了解的函數

imagealphablending

此函數,開啟或關閉一個真彩色圖像資源的混色模式。開啟與關閉混合模式有什么區別呢?如果不涉及透明度的問題,兩個模式沒什么區別,但是如果是在一張畫布上畫一條透明顏色的線,不同的混合模式將出現不同的效果,如果混合模式開啟,則透明線的顏色會與原背景中的顏色疊加,計算出新的顏色,顯示出來,如果混合模式關閉,則透明線的顏色直接覆蓋到畫布中對應位置的顏色值。

簡單來說,開啟混合模式,顏色疊加,關閉混合模式,顏色覆蓋。

imagecolorallocatealpha

類似于拾色器的功能,就是生成一個顏色, 的行為和 imagecolorallocate?相同,但多了一個額外的透明度參數 alpha,其值從 0 到 127。0 表示完全不透明,127 表示完全透明。

imagesavealpha

設置標記以在保存 PNG 圖像時保存完整的 alpha 通道信息,如果你想保存一個透明的png圖標,這個函數是必要的。

給個生成300×300完全透明PNG的例子,

PHP

$block=imagecreatetruecolor(300,300);//建立一個畫布

$c=imagecolorallocatealpha($block , 0 , 0 , 0 ,127);//拾取一個完全透明的顏色

imagealphablending($block ,false);//關閉混合模式,以便透明顏色能覆蓋原畫布

imagefill($block , 0 , 0, $c);//填充

imagesavealpha($block ,true);//設置保存PNG時保留透明通道信息

imagepng($block ,'e.png');//生成圖片

?>

1

2

3

4

5

6

7

8

$block=imagecreatetruecolor(300,300);//建立一個畫布

$c=imagecolorallocatealpha($block,0,0,0,127);//拾取一個完全透明的顏色

imagealphablending($block,false);//關閉混合模式,以便透明顏色能覆蓋原畫布

imagefill($block,0,0,$c);//填充

imagesavealpha($block,true);//設置保存PNG時保留透明通道信息

imagepng($block,'e.png');//生成圖片

?>

另一種建立透明PNG的方法 , 使用imagecolortransparent設置圖片的透明色屬性,也就是把圖片上的某個顏色設置成透明色。

PHP

$block= imagecreatetruecolor(300 ,300);//建立一個真彩色畫布

$white= imagecolorallocate($block , 255 , 255 ,255);//拾取白色

imagefill($block , 0 , 0, $white);//把畫布染成白色

imagecolortransparent($block ,$white );//把圖片中白色設置為透明色

//imagesavealpha($block , false);

imagepng($block ,'e.png');//生成圖片

?>

1

2

3

4

5

6

7

8

$block=imagecreatetruecolor(300,300);//建立一個真彩色畫布

$white=imagecolorallocate($block,255,255,255);//拾取白色

imagefill($block,0,0,$white);//把畫布染成白色

imagecolortransparent($block,$white);//把圖片中白色設置為透明色

//imagesavealpha($block , false);

imagepng($block,'e.png');//生成圖片

?>

總結

以上是生活随笔為你收集整理的php 网页 透明背景图片,php 处理透明背景的图片时的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品一区在线播放 | 91久久网 | 中文字幕在线观看第一页 | 国产第一色| 91在线免费网站 | 台湾佬中文在线 | 欧美五月婷婷 | 中文字幕+乱码+中文乱码www | 国产欧美精品久久 | 国产精品v日韩精品v在线观看 | 黄色福利网站 | 久久免费网 | 欧美综合国产 | 日韩少妇 | 日本视频免费观看 | 成人欧美一区二区三区黑人免费 | 国产成人片 | 欧美黑人性猛交xxxx | 91午夜在线 | 丁香网五月天 | 欧美熟妇一区二区 | 日本福利在线观看 | 日韩精品久久久久久久的张开腿让 | 免费av毛片 | 最新免费黄色网址 | 少妇无码一区二区三区免费 | 欧美国产一区二区三区 | 亚洲精品久久久 | 久久人人爽爽 | 四虎影院黄色 | 欧美情侣性视频 | 老司机亚洲精品 | a级网站在线观看 | 亚洲综合色站 | 国产精品久久av无码一区二区 | xxx黄色片| 国产视频福利在线观看 | 粉嫩av一区二区白浆 | 国产性xxx| 亚洲av无码国产精品久久久久 | 日本女人黄色片 | 永久免费看片在线播放 | 91国产视频在线观看 | 无码人妻aⅴ一区二区三区日本 | 综合视频在线观看 | wwwa级片| 午夜影院免费看 | 在线播放a | 熟睡侵犯の奶水授乳在线 | 色综合国产 | 久色精品视频 | 伊人久久久久久久久 | 麻豆传媒映画官网 | 国产亚洲av综合人人澡精品 | 久久激情av| 国产男人的天堂 | 97桃色| 久久久久亚洲AV成人无码国产 | 精品国产一级 | 日韩精品tv| 国产有码在线观看 | 99精品一级欧美片免费播放 | 又大又粗弄得我出好多水 | 久久久久亚洲AV成人网人人小说 | 国产区视频在线观看 | 日韩精品在线一区 | 91极品尤物 | 国产99久久久国产精品免费看 | 亚洲色图36p | 热热av| 日韩欧美久久久 | 黄页嫩草 | 黄色小视频在线播放 | 国产精品白嫩极品美女视频 | 国产一级二级三级视频 | 日本成人一二三区 | 久草视频国产 | 亚洲国产网 | 环太平洋3:泰坦崛起 | 国产精品久久久久影院 | www,xxx日本 | 日韩三级中文 | 艹男人的日日夜夜 | 免费麻豆av | 日韩无码电影 | 成人动漫在线免费观看 | 日韩a√ | 九九久久国产精品 | 国产高潮av | 亚洲乱码国产乱码精品天美传媒 | 狠狠澡| 啪啪网站视频 | 亚洲成在线观看 | 免费看成人| 中文天堂资源在线 | 午夜三级网站 | 黄色大片国产 | 成年人在线免费观看视频网站 | 午夜整容室 |