php把文字生成圖片
Ⅰ 求代碼示例:php將資料庫讀取出來的文字轉成圖片顯示在頁面上
<?php
$Phone=18907975647;#手機號碼,具體從資料庫怎麼讀出來,你自己寫代碼
$im=imagecreate(300,30);#建立一個寬300,高30像素的圖片對象
imagecolorallocate($im,255,255,255);#將圖片背景填充為白色
$Color=imagecolorallocate($im,0,0,0);#在生成一黑色色顏色,以便寫入字元串
imagestring($im,16,0,0,$Phone,$Color);#將字元串寫到圖片上
header('content-type:image/*');//設置文件頭為圖片格式
imagepng($im);//輸出一個png格式的圖片
imagedestroy($im);//銷毀圖片對象
下面寫效果圖:
Ⅱ 如何用php把文字轉變成圖片.也就是往網頁輸入文字.通過網站後台生成png圖片
首先要確定你的環境支持GD庫;
程序很簡單:
$str = "測試一下";//輸入的文字
header("Content-type: image/jpeg");
$im = imagecreate(100, 30) or die("Cannot Initialize new GD image stream");//圖片大小
$str=iconv("gb2312","UTF-8",$str);
for($i=0;$i<200;$i++) //加入干擾象素
{
$clr = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%100 , rand()%50 , $clr);
}
//$str="sss";
$black = imagecolorallocate($im, 0, 0, 0);
$fnt = "c:\windows\fonts\simhei.ttf"; //字體文件
ImageTTFText($im, 15, 0, 10, 20, $black, $fnt, $str);
imagejpeg($im);
//imagepng($im);
imagedestroy($im);
Ⅲ PHP文字生成圖片
沒仔細看你的程序,但是如果你的意思是想加上中文,但是中文是gbk的,然後就出現亂碼了的話就對了。
假設你的中文是 $str="這是你的中文內容"
加上下面一句:
$str = iconv("gbk","utf-8",$str)
這時候再把$str加到上面就不會亂碼了
Ⅳ php如何生成加粗或者斜體的文字樣式圖片
加粗或者斜體的文字可以用php的函數控制.我想你是想生成驗證碼圖片是嗎?
如果是想生成驗證么圖片有幾個函數可以考慮
imagecreate($length,$height)創建圖片.參數是圖片的寬度和高度
imagecolorallocate($image,$r,$g,$b)設置背景色,r b g就是圖片的三色rgb參數.這個可以由傳入0-255的隨機數決定隨機的背景色.還可以生成字體色
imagettftext($_image,$fontSize,mt_rand(-40,70),$codeNX,$fontSize*1.5,$_color,$ttf,$code[$i]);寫入隨機的文字,這里要一個字一個字寫.所以這個函數要循環調用.
網路了一下 找到了一個類...如下
<?php
/**
*安全驗證碼
*
*安全的驗證碼要:驗證碼文字扭曲、旋轉,使用不同字體,添加干擾碼。
*如果用中文做驗證碼(我這里不是哦,有興趣你來改成用中文的),安全度會更好些,但驗證碼扭曲和旋轉是王道,用了字體也算是已經給字體扭曲了,我就不再去給他添一隻扭曲的足了。
*可配置的屬性都是一些簡單直觀的變數,我就不用弄一堆的setter/getter了
*
*@author流水孟春<cmpan(at)qq.com>
*@rightNEWBSD
*@linkhttp://labs.yulans.cn/YL_Security_Secoder
*@linkhttp://wiki.yulans.cn/docs/yl/security/secoder
*/
classYL_Security_Secoder{
/**
*驗證碼的session的下標
*
*@varstring
*/
publicstatic$seKey='sid.sekey.ylans.cn';
publicstatic$expire=3000;//驗證碼過期時間(s)
/**
*驗證碼中使用的字元,01IO容易混淆,建議不用
*
*@varstring
*/
publicstatic$codeSet='346789ABCDEFGHJKLMNPQRTUVWXY';
publicstatic$fontSize=25;//驗證碼字體大小(px)
publicstatic$useCurve=true;//是否畫混淆曲線
publicstatic$useNoise=true;//是否添加雜點
publicstatic$imageH=0;//驗證碼圖片寬
publicstatic$imageL=0;//驗證碼圖片長
publicstatic$length=4;//驗證碼位數
publicstatic$bg=array(243,251,254);//背景
protectedstatic$_image=null;//驗證碼圖片實例
protectedstatic$_color=null;//驗證碼字體顏色
/**
*輸出驗證碼並把驗證碼的值保存的session中
*驗證碼保存到session的格式為:$_SESSION[self::$seKey]=array('code'=>'驗證碼值','time'=>'驗證碼創建時間');
*/
publicstaticfunctionentry(){
//圖片寬(px)
self::$imageL||self::$imageL=self::$length*self::$fontSize*1.5+self::$fontSize*1.5;
//圖片高(px)
self::$imageH||self::$imageH=self::$fontSize*2;
//建立一幅self::$imageLxself::$imageH的圖像
self::$_image=imagecreate(self::$imageL,self::$imageH);
//設置背景
imagecolorallocate(self::$_image,self::$bg[0],self::$bg[1],self::$bg[2]);
//驗證碼字體隨機顏色
self::$_color=imagecolorallocate(self::$_image,mt_rand(1,120),mt_rand(1,120),mt_rand(1,120));
//驗證碼使用隨機字體
$ttf=dirname(__FILE__).'/ttfs/'.mt_rand(1,20).'.ttf';
if(self::$useNoise){
//繪雜點
self::_writeNoise();
}
if(self::$useCurve){
//繪干擾線
self::_writeCurve();
}
//繪驗證碼
$code=array();//驗證碼
$codeNX=0;//驗證碼第N個字元的左邊距
for($i=0;$i<self::$length;$i++){
$code[$i]=self::$codeSet[mt_rand(0,27)];
$codeNX+=mt_rand(self::$fontSize*1.2,self::$fontSize*1.6);
//寫一個驗證碼字元
imagettftext(self::$_image,self::$fontSize,mt_rand(-40,70),$codeNX,self::$fontSize*1.5,self::$_color,$ttf,$code[$i]);
}
//保存驗證碼
isset($_SESSION)||session_start();
$_SESSION[self::$seKey]['code']=join('',$code);//把校驗碼保存到session
$_SESSION[self::$seKey]['time']=time();//驗證碼創建時間
header('Cache-Control:private,max-age=0,no-store,no-cache,must-revalidate');
header('Cache-Control:post-check=0,pre-check=0',false);
header('Pragma:no-cache');
header("content-type:image/png");
//輸出圖像
imagepng(self::$_image);
imagedestroy(self::$_image);
}
/**
*畫一條由兩條連在一起構成的隨機正弦函數曲線作干擾線(你可以改成更帥的曲線函數)
*
*高中的數學公式咋都忘了涅,寫出來
* 正弦型函數解析式:y=Asin(ωx+φ)+b
*各常數值對函數圖像的影響:
*A:決定峰值(即縱向拉伸壓縮的倍數)
*b:表示波形在Y軸的位置關系或縱向移動距離(上加下減)
*φ:決定波形與X軸位置關系或橫向移動距離(左加右減)
*ω:決定周期(最小正周期T=2π/∣ω∣)
*
*/
protectedstaticfunction_writeCurve(){
$A=mt_rand(1,self::$imageH/2);//振幅
$b=mt_rand(-self::$imageH/4,self::$imageH/4);//Y軸方向偏移量
$f=mt_rand(-self::$imageH/4,self::$imageH/4);//X軸方向偏移量
$T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
$w=(2*M_PI)/$T;
$px1=0;//曲線橫坐標起始位置
$px2=mt_rand(self::$imageL/2,self::$imageL*0.667);//曲線橫坐標結束位置
for($px=$px1;$px<=$px2;$px=$px+0.9){
if($w!=0){
$py=$A*sin($w*$px+$f)+$b+self::$imageH/2;//y=Asin(ωx+φ)+b
$i=(int)((self::$fontSize-6)/4);
while($i>0){
imagesetpixel(self::$_image,$px+$i,$py+$i,self::$_color);//這里畫像素點比imagettftext和imagestring性能要好很多
$i--;
}
}
}
$A=mt_rand(1,self::$imageH/2);//振幅
$f=mt_rand(-self::$imageH/4,self::$imageH/4);//X軸方向偏移量
$T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
$w=(2*M_PI)/$T;
$b=$py-$A*sin($w*$px+$f)-self::$imageH/2;
$px1=$px2;
$px2=self::$imageL;
for($px=$px1;$px<=$px2;$px=$px+0.9){
if($w!=0){
$py=$A*sin($w*$px+$f)+$b+self::$imageH/2;//y=Asin(ωx+φ)+b
$i=(int)((self::$fontSize-8)/4);
while($i>0){
imagesetpixel(self::$_image,$px+$i,$py+$i,self::$_color);//這里(while)循環畫像素點比imagettftext和imagestring用字體大小一次畫出(不用這while循環)性能要好很多
$i--;
}
}
}
}
/**
*畫雜點
*往圖片上寫不同顏色的字母或數字
*/
protectedstaticfunction_writeNoise(){
for($i=0;$i<10;$i++){
//雜點顏色
$noiseColor=imagecolorallocate(
self::$_image,
mt_rand(150,225),
mt_rand(150,225),
mt_rand(150,225)
);
for($j=0;$j<5;$j++){
//繪雜點
imagestring(
self::$_image,
5,
mt_rand(-10,self::$imageL),
mt_rand(-10,self::$imageH),
self::$codeSet[mt_rand(0,27)],//雜點文本為隨機的字母或數字
$noiseColor
);
}
}
}
/**
*驗證驗證碼是否正確
*
*@paramstring$code用戶驗證碼
*@returnbool用戶驗證碼是否正確
*/
publicstaticfunctioncheck($code){
isset($_SESSION)||session_start();
//驗證碼不能為空
if(empty($code)||empty($_SESSION[self::$seKey])){
returnfalse;
}
//session過期
if(time()-$_SESSION[self::$seKey]['time']>self::$expire){
unset($_SESSION[self::$seKey]);
returnfalse;
}
if($code==$_SESSION[self::$seKey]['code']){
returntrue;
}
returnfalse;
}
}
//useage
/*
YL_Security_Secoder::$useNoise=false;//要更安全的話改成true
YL_Security_Secoder::$useCurve=true;
YL_Security_Secoder::entry();
*/
/*
//驗證驗證碼
if(!YL_Security_Secoder::check(@$_POST['secode'])){
print'errorsecode';
}
*/這是效果
Ⅳ 如何將文字用php轉換成圖片
header ("Content-type: image/png");
function autowrap($fontsize, $angle, $fontface, $string, $width) {
// 這幾個變數分別是 字體大小, 角度, 字體名稱, 字元串, 預設寬度
$content = "";
// 將字元串拆分成一個個單字 保存到數組 letter 中
for ($i=0;$i<mb_strlen($string);$i++) {
$letter[] = mb_substr($string, $i,1,'utf-8');
}
foreach ($letter as $l) {
$teststr = $content." ".$l;
$testbox = imagettfbbox($fontsize, $angle, $fontface, $teststr);
// 判斷拼接後的字元串是否超過預設的寬度
if (($testbox[2] > $width) && ($content !== "")) {
$content .= "\n";
}
$content .= $l;
}
return $content;
}
$text = $_GET['text'];//傳過來的要處理的文字
$text = autowrap(14, 0, "msyh.ttf", $text, 250); // 自動換行處理
$im = imagecreate(278,350);
$background = imagecolorallocate($im, 255, 0, 0);
imagecolortransparent($im,$background); //imagecolortransparent() 設置具體某種顏色為透明色,若注釋
$A = "img/".$_GET['mo'].".png";
$black = imagecreatefromstring(file_get_contents($A));
$white = imagecolorallocate($black,0x66,0x66,0x66);
imagettftext($black,12,0,30,55,$white,"msyh.ttf",$text); //字體設置部分linux和windows的路徑可能不同
imagepng($black);//文字生成的圖
Ⅵ 用php代碼怎麼以背景圖片加上文字生成新的圖片,然後在標題處絕對調用該圖片
<?php
ob_clean(); //清除輸出緩存
header("Content-type:image/jpeg"); //設置輸出類型
$img="images/test.jpg"; //背景圖片名
if(isset($_GET["img"]))$img=$_GET["img"]; //也可以通過img參數傳入
$im=imagecreatefromjpeg($img); //讀入背景圖片
$text="文字內容"; //要加上的文字內容
if(isset($_GET["text"]))$text=$_GET["text"]; //也可以通過text參數傳入
$fontFile="xxx.ttf"; //字體文件名,必須要
$fontSize=36; //字體尺寸
$fontColor=ImageColorAllocate($im,0,0,0); //字體顏色,這里是黑色
$textAngle=0; //文字顯示的角度,0表示水平顯示
$textLeft=20; //文字顯示的x坐標
$textTop=60; //文字顯示的y坐標
imagefttext($im,$fontSize,$textAngle,$textLeft,$textTop,$fontColor,$fontFile,$text); //把文字覆蓋到圖片上
Imagejpeg($im); //輸出圖片
ImageDestroy($im); //銷毀圖片
?>
把以上文字保存為php文件,比如 img.php
然後在需要調用圖片的地方用 <img src="img.php?img=背景圖片文件路徑&text=要加上的文字"/> 來調用
比如 <img src="img.php?img=images/back.jpg&text=你好"/>
Ⅶ php文字生成圖片如何使字體變大
這個內置就是1---5,你試下:imagettftext