1. 程式人生 > >php獲取時間戳/基本繪圖及驗證碼、水印

php獲取時間戳/基本繪圖及驗證碼、水印

1、獲取時間戳

<?php
//獲取現在的unix時間戳
$time=time();
echo $time;
?>
獲取某個時間的時間戳
<?php
//設定預設時區是中國
date_default_timezone_set("Asia/Shanghai");
//獲取2014-05-01的unix時間戳
echo strtotime('2014-05-01');
?>
echo strtotime("now");//相當於將英文單詞now直接等於現在的日期和時間,並把這個日期時間轉化為unix時間戳。這個效果跟echo time();一樣。
echo strtotime("+1 seconds");//相當於將現在的日期和時間加上了1秒,並把這個日期時間轉化為unix時間戳。這個效果跟echo time()+1;一樣。
echo strtotime("+1 day");//相當於將現在的日期和時間加上了1天。
echo strtotime("+1 week");//相當於將現在的日期和時間加上了1周。
echo strtotime("+1 week 3 days 7 hours 5 seconds");//相當於將現在的日期和時間加上了1周3天7小時5秒。
由時間戳獲取時間
<?php
//設定預設的時區
date_default_timezone_set('Asia/Shanghai');
//輸出1396193923對應的日期,2014-03-30
echo date("Y-m-d",'1396193923');
?>
格林威治標準時(GMT)比中國時區要晚8個小時。
echo date('Y-m-d H:i:s', time()); //輸出為:2014-05-01 15:15:22 
echo gmdate('Y-m-d H:i:s', time()); //輸出為:2014-05-01 07:15:22 ,GMT
echo gmdate('Y-m-d H:i:s', strtotime('2014-05-01 12:00:01')); 
2、基本繪圖

繪製空白畫布

$img = imagecreatetruecolor(100, 100);

設定RGB的顏色值來確定畫筆的顏色:

$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);
線條的繪製,通過指定起點跟終點來最終得到線條。
imageline($img, 0, 0, 100, 100, $red);
線條繪製好以後,通過header與imagepng進行影象的輸出。
header("content-type: image/png");
imagepng($img);

最後可以呼叫imagedestroy釋放該圖片佔用的記憶體。
imagedestroy($img);

通過imagepng函式指定檔名將繪製後的影象儲存到檔案中。
imagepng($img, 'img.png');

<?php
$img = imagecreatetruecolor(100, 100);
$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);
//在這裡使用imageline繪製線條
imageline($img,0,0,100,100,$red);
header("content-type: image/png");
imagepng($img);
imagedestroy($img);
?>

imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col ),可以通過$font來設定字型的大小,x,y設定文字顯示的位置,$s是要繪製的文字,$col是文字的顏色。

imagestring($img, 5, 0, 0, "Hello world", $red);  //在img的畫布上顯示字型大小為5的紅色文字

輸出影象:
$filename = 'img.png';
imagepng($img, $filename);

imagejpeg會對圖片進行壓縮,因此還可以設定一個質量引數。
$filename = 'img.jpg';
​imagejpeg($img, $filename, 80);

3、生成影象驗證碼舉例:
<?php
$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//生成隨機的驗證碼
$code = '';
for($i = 0; $i < 4; $i++) {
    $code .= rand(0, 9);
}
imagestring($img, 5, 10, 10, $code, $black);
//加入噪點干擾
for($i=0;$i<50;$i++) {
  imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); 
  imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green);
}
//輸出驗證碼
header("content-type: image/png");
imagepng($img);
imagedestroy($img);
?>

4、給圖片新增水印

通過imagecreatefromjpeg可以直接從圖片檔案建立影象。

$im = imagecreatefromjpeg($filename);

要加的水印是一個logo圖片,那麼就需要再建立一個影象物件,然後通過GD函式imagecopy將logo的影象複製到源影象中。
$logo = imagecreatefrompng($filename);
imagecopy($im, $logo, 15, 15, 0, 0, $width, $height);
imagejpeg($im, $filename);
以下程式碼為示例,實際使用時提示警告資訊,未正確顯示圖片和水印
<?php
//這裡僅僅是為了案例需要準備一些素材圖片
$url = 'http://www.iyi8.com/uploadfile/2014/0521/20140521105216901.jpg';
$content = file_get_contents($url);
$filename = 'tmp.jpg';
file_put_contents($filename, $content);
$url = 'http://wiki.ubuntu.org.cn/images/3/3b/Qref_Edubuntu_Logo.png';
file_put_contents('logo.png', file_get_contents($url));
//開始新增水印操作
$im = imagecreatefromjpeg($filename);
$logo = imagecreatefrompng('logo.png');
$size = getimagesize('logo.png');
imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); 
 
header("content-type: image/jpeg");
imagejpeg($im,$filename);
?>
其它加水印程式碼可百度