[PHP]自動產生圖形 header image系列指令

好 我們也可以透過php來產生任何你想要的檔案jpg pdf…$%$%…

甚至在上面寫字都行(就像是圖形驗證碼那種)
我門來看一下建立圖片的步驟

<?php header("Content-type: image/png"); //設定圖檔格式
 $im = @imagecreatetruecolor(80, 20) or die("無法建立圖片!"); //建立一張全彩圖
 $text_color = imagecolorallocate($im, 255, 255, 255);  //設定文字顏色
 imagestring($im, 2, 5, 2, "Hi! I'm Tad", $text_color);  //將字串加入圖片中
 imagepng($im);  //產生圖片
 imagedestroy($im);   //結束$im釋放記憶體 ?>

好 這邊就會比較深一點了

首先
催眠指令header(“Content-type: “)
為甚麼php會以為他是一張圖檔而不是php檔呢 就是因為這行 我們對他催眠了
header(“Content-type: application/pdf”);
所以他是一個催眠指令(?)
建立圖檔imagecreatetruecolor(寬度,高度)
$im = @imagecreatetruecolor(80, 20) or die(“無法建立圖片!”);
不過這函數要搭配GD2.0.1版本以後才WORK
設定顏色imagecolorallocate
imagecolorallocate(圖檔辨識符,R,G,B) RGB值
加入字串imagestring
imagestring($im, 2, 5, 2, “Hi! I’m Tad”, $text_color);
imagestring(圖檔辨識符,字行編號1~5, X坐標 ,Y坐標,字串 , 文字顏色
輸出圖片imagepng();
imagepng($im); 當然因為一開始設定是pnp圖 要是gif圖檔 就是imagegif()
這樣jpg為imagejpeg()
消毀圖片imagedestroy();
為了節省記憶體 也避免錯誤 所以圖片輸出完後 就可以把辨識符給銷毀了
等於是清空系統資料 反正圖片已經取得了


那我們就來再把它應用到計數器上面 不要像之前那樣一張一張圖的
這次就是整個計數器一張就好

<?php
$data="count.txt";
//產生新值
if(file_exists($data)){
    //讀取舊值並加1成為新值
    $fp=fopen($data,"r");
    $old_count=fread($fp,filesize($data));
    $new_count=$old_count+1;
    fclose($fp);
}else{
    $new_count=1;
}
//寫入新值到count.txt中
$fp=fopen($data,"w");
fwrite($fp,$new_count);
fclose($fp);
//圖片生成
header("Content-type: image/png");
$im = @imagecreatetruecolor(80, 20) or die("無法建立圖片!");
$text_color = imagecolorallocate($im, 255, 255, 255);
imagestring($im, 5, 5, 1,  $new_count, $text_color);
imagepng($im);
imagedestroy($im);
?>

這篇教學應用的地方感覺比較少啦

除了計數器根圖形驗證碼之外 我絕得沒太多用到的價值

除非你想幫訪客設計專屬於它網站的圖片那可能會有點價值

或是在一些圖片上面加上說明啦(例如圖片浮水印 這就可以用)

不過既然要加上說明 在本機就把圖片畫好應該是更快才對

除非有特殊用途顯示…

ps.這個圖像功能,之前我有用過這個產生圖片的方式產生一張圖片然後貼到噗浪上面去竟然成功的騙過噗浪讓他以為這真的是一張圖片而顯示出來
而我圖片裡面的php代碼也被執行了,看來噗浪的安全性大概需要多多加強了。不然要是我在裡面放非法的代碼的話,應該會很慘

雖然我也只利用他玩過一些噗浪的小遊戲跟測試某人有沒有在線上而已(我只要私噗給對方,對方有在線上就會強制自己開圖我就會收到資料了 zzz..)

發表迴響

你的電子郵件位址並不會被公開。

(若看不到驗證碼,請重新整理網頁。)