GD庫是什么,功能是什么?
2009-11-10 14:19:09
19993
在
PHP處理圖像,可使用
GD庫,而
GD庫開始時是支持
GIF的,但由于
GIF使用了有版權爭議的
LZW算法,會引起法律問題,于是從
GD-1.6開始,
GD庫不再支持
GIF,改為支持更好的,無版權爭議的
PNG。
php(gd庫)輸出中文圖像的轉換函數
首先配置
GD庫:
1:用
dos命令
(也可以手動操作
,拷貝
dlls文件夾里所有
dll文件到
system32目錄下
) copy c:phpdlls*.dll c:windowssystem32
2:打開
php.ini
設置
extension_dir = "c:/php/extensions/";
3:
extension=php_gd2.dll;把
extension前面的逗號去掉,如果沒有
php_gd2.dll,
php_gd.dll也一樣
,保證確實存在這一文件
c:/php/extensions/php_gd2.dll
4:運行下面程序進行測試
PHP代碼
:--------------------------------------------------------------------------------
<?php
Ob_end_flush();
//注意
,在此之前不能向瀏覽器輸出任何信息
,要注意是否設置了
auto_prepend_file.
header ("Content-type: image/png");
$im = @imagecreate (200, 100)
or die ("無法創建圖像
");
$background_color = imagecolorallocate ($im, 0,0, 0);
$text_color = imagecolorallocate ($im, 230, 140, 150);
imagestring ($im, 3, 30, 50, "A Simple Text String", $text_color);
imagepng ($im);
?>
其實我知道的也不多,具體的你可以搜索一下的,給你一個對
GD庫中
imagecopy的
Alpha功能的完善的例子研究一下吧:
<?php
//****************************************************************************************
//帶有
Alpha值設定的
imagecopy函數,實現將一個圖片拷貝到另一個圖片的同時設置
Alpha值的效果。
//PHP的
GD函數庫中,沒有直接實現帶透明度設定的圖片復制函數
,這里使用的是像素級的復制。
//所使用到的
GD函數:
//imagealphablending(),imagecolorat(),imagecolorallocatealpha(),imagesetpixel()
//imagealphablending(resource image,true)是默認值,這里只是顯示賦值。
//版權信息:
//作者:高銘源
昵稱:
Gapple E-mail:
gapple@sina.com 創作時間:
2004年
5月
7日
19:00~
22:30
//補充完善版本是在
2004-05-10 12:00完成的。感謝
PASiO提供幫助:
“透明的
PNG圖片即可而且沒有白色雜點
”。
//****************************************************************************************
//已知問題
:1)使用
Png文件格式沒有問題,其他圖片顏色會有雜點,也就是無法干凈鏤空
Logo圖片。
// 2)Png文件不能使用
Photoshop生成,而要用
Firework MX以上的版本,
Firework3.0經測試不可以。
//****************************************************************************************
//----------------------------------------函數參數說明
------------------------------------
//
//變量
含義
類型
//$dst_im 目標圖像
resource
//$src_im 源圖像
resource
//$dst_x 目標圖像
x坐標
int
//$dst_y 目標圖像
y坐標
int
//$dst_w 目標圖像寬度
int
//$dst_h 目標圖像高度
int
//$src_w 源圖像寬度
int
//$src_h 源圖像高度
int
//$tran_color 期望的源圖像中透明的顏色
int
//$alpha 透明度設定值
(0~127) int
//
//****************************************************************************************
function imagealphacopy($dst_im,$src_im,$dst_x,$dst_y,$dst_w,$dst_h,$src_w,$src_h,$tran_color,$alpha)
{
//判斷是否越界
if (($src_w+$dst_x)>$dst_w)
{
return(false);
}
if (($src_h+$dst_y)>$dst_h)
{
return(false);
}
//判斷完畢!
imagealphablending($dst_im,true);
for ($j=0;$j<=$src_h-1;$j++)
{
for ($i=0;$i<=$src_w-1;$i++)
{
$rgb = imagecolorat($src_im,$i,$j);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
$now_color=imagecolorallocate($dst_im,$r,$g,$b);
if ($now_color==$tran_color)
{
continue;
}
else
{
//echo $now_color."<br>";
$color=imagecolorallocatealpha($dst_im,$r,$g,$b,$alpha);
imagesetpixel($dst_im,$dst_x+$i,$dst_y+$j,$color);
}
}
}
}
$im_in=imagecreatefrompng("in.png");
$insize=getimagesize("in.png");
$im_out=imagecreatefromjpeg("out.jpg");
$outsize=getimagesize("out.jpg");
$white=imagecolorallocate ($im_out,255,255,255);
imagealphacopy($im_out,$im_in,70,180,$outsize[0],$outsize[1],$insize[0],$insize[1],$white,75);
imagepng($im_out,"large.png");
imagedestroy($im_in);
imagedestroy($im_out);
?>
<img src="large.png" border=0>