版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/aojianmo2012/article/details/55197334
<?php
$position = 0;//如果爲0表示任意位置,如果爲1表示左上角如果爲2表示右上腳,如果爲3表示左下角,如果爲4右下角,如果爲5中間。
//創建要加水印圖片的資源
$dImg = imagecreatefromjpeg('./4557409ea6c0c2483126d3f8a113369d.jpg');
//水印圖片的資源
$wImg = imagecreatefrompng('./3.png');
//獲得水印圖片的寬度和高度
$wImgWidth = imagesx($wImg);
$wImgHeight = imagesy($wImg);
//獲得要加水印圖片的寬度和高度
$dImgWidth = imagesx($dImg);
$dImgHeight = imagesy($dImg);
//判斷位置
if(!$position){//如果位置爲0,那麼隨機
$position = rand(1,5);
}
switch($position){
case 1:
$x = 0;
$y = 0;
break;
case 2:
$x = $dImgWidth - $wImgWidth;
$y = 0;
break;
case 3:
$x = 0;
$y = $dImgHeight - $wImgHeight;
break;
case 4:
$x = $dImgWidth - $wImgWidth;
$y = $dImgHeight - $wImgHeight;
break;
case 5:
$x = ($dImgWidth - $wImgWidth) / 2;
$y = ($dImgHeight - $wImgHeight) / 2;
break;
}
imagecopy($dImg,$wImg,$x,$y,0,0,$wImgWidth,$wImgHeight);
//保存圖片
imagejpeg($dImg,'./xxooxxooni.jpg');
//銷燬圖片資源
imagedestroy($dImg);
imagedestroy($wImg);
?>
<!---------------------------------------------------------------------->
<?php
$code = '0123456789';
//注意這種取法,一般的時候不要用,只能這樣取數字、字母
echo $code[rand(0,strlen($code)-1)];
?>
<!---------------------------------------------------------------------->
<?php
//1、要處理的圖片名字
$fileName = './xxoo.jpg';
//2、將要縮放的寬度和高度
$newWidth = 200;
$newHeight = 200;
//3、獲得原來圖片的信息
$oldInfo = getimagesize($fileName);
$oldWidth = $oldInfo[0];//得到的老寬度
$oldHeight = $oldInfo[1];//得到的老高度
var_dump($oldInfo);
//4、獲得要縮放的圖片的類型
$types = array(1=>'gif',2=>'jpeg',3=>'png');
//5、獲得創建函數的字符串
$imagecreate = 'imagecreatefrom'.$types[$oldInfo[2]];//$types[2]
//6、獲得縮放後保存的函數的字符串
$image = 'image'.$types[$oldInfo[2]];
//7、創建新圖片資源
$newImg = imagecreatetruecolor($newWidth,$newHeight);
//8、獲得老圖片的資源
$oldImg = $imagecreate($fileName);
imagecopyresampled($newImg,$oldImg,0,0,0,0,$newWidth,$newHeight,$oldWidth,$oldHeight);
//$newFileName = md5(date('YmdHis')).rand(1000,9999).'.'.$types[$oldInfo[2]];
$sufFix = explode('.',$fileName);
$sufFix = array_pop($sufFix);
$newFileName = md5(date('YmdHis')).rand(1000,9999).'.'.$sufFix;
//9、保存圖像
$image($newImg,'./'.$newFileName);
imagedestroy($newImg);
imagedestroy($oldImg);
//程序不應該是寫的多,而應該是寫的巧。
?>
<!---------------------------------------------------------------------->
<?php
header('content-type:image/jpeg');
/*
*1、生成一個隨機背景圖片(寬150,高50) 背景顏色隨機的
*2、畫干擾像素點,像素點位置應該也是隨機的。顏色也是隨機的
*3、寫字,寫什麼字應該是隨機出來的組合,字體的大小也是隨機的。位置也是隨機的,個數定在4個。
*/
//1、創建畫布
$img = imagecreatetruecolor(150,50);
//2、設置畫布的顏色
$bgColor = imagecolorallocate($img,rand(126,255),rand(126,255),rand(126,255));
//3、填充畫布
imagefill($img,0,0,$bgColor);
//6、畫像素點
for($i = 1; $i<= 500; $i++){
$pixelX = rand(5,145);//隨機的x
$pixelY = rand(5,45);//隨機的y
$pixelColor = imagecolorallocate($img,rand(0,125),rand(0,125),rand(0,125));
//畫點
imagesetpixel($img,$pixelX,$pixelY,$pixelColor);
}
/*加橫線,加着玩的
for($k = 1 ; $k <= 20 ; $k++){
$lineColor = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imageline($img,rand(5,75),rand(5,45),rand(76,145),rand(5,45),$lineColor);
}*/
$code = '0123456789abcdefghijklmnopqrstuvwxyz';
//7、還得往上面+字 4 ===》
for($i = 1 ; $i <= 4 ; $i++){
//隨機出來的字體的大小
$fontSize = rand(15,20);
//隨機出來的字體顏色
$fontColor = imagecolorallocate($img,rand(0,125),rand(0,125),rand(0,125));
//每次隨機出來的字
$text = $code[rand(0,strlen($code)-1)];
//計算x和y的位置
$fontX = (100 / 4) * $i;
$fontY = 30;
//echo "<h1>{$text}</h1>";
imagettftext($img,$fontSize,0,$fontX,$fontY,$fontColor,'./arial.ttf',$text);
}
//4、輸出畫布
imagejpeg($img);
//5、銷燬資源
imagedestroy($img);
?>
<!-------------------------------------------------------------------------------->
<?php
header('content-type:image/jpeg');
$say = array(1=>'地球的外面是什麼?','香飄飄奶茶','......');
//1、有畫布
$img = imagecreatefromjpeg('./bf9700adcbef76096125c9b82cdda3cc7cd99e4a.jpg');
//2、寫字
$imgHeight = imagesy($img) / 3;//獲得每一份的高度
$imgWidth = imagesx($img);//獲得的是圖像寬度
$color = imagecolorallocate($img,255,255,0);
foreach($say as $key=>$value){
imagettftext($img,20,0,5,($imgHeight*$key)-10,$color,'./SIMYOU.TTF',$value);
}
//3、輸出或保存圖像
imagejpeg($img);
//4、銷燬畫布
imagedestroy($img);
?>
<!---------------------------------------------------------------------------->
<?php
var_dump(getimagesize('./bf9700adcbef76096125c9b82cdda3cc7cd99e4a.jpg'));
?>
使用圖像背景
imagecreatefromjpeg();創建一個以jpeg圖像爲背景的資源
imagecreatefrompng();
imagecreatefromgif();
imagesx();獲得圖像的寬度
imagesy();獲得圖像的高度
getimagesize();返回一個圖像的信息的數組
注意:
1、getimagesize不用傳進來一個資源只要一個文件名就可以。
2、得到的數組中0下標得到的是寬度,1下標得到的是高度。
2下標得到的是類型
1=>gif
2=>jpeg
3=>png
圖像縮放:
imagecopyresampled(新圖片,老圖片,新x,新y,老x,老y,新寬,新高,老寬,老高);
注意:
1、新y,縮放後的圖像離畫布的上邊緣的距離。
2、新x,縮放的圖像離畫布的左邊緣的距離。
3、老x,和老y決定了什麼?將老的x和老y都離開了指定的像素之後,然後再進行縮放。右下角中和新畫布右下角的距離。
等比例縮放:
if(新寬 && (舊寬 < 舊高)){
新寬 = (新高 / 舊高) * 舊寬
}else{
新高 = (新寬 /舊寬) * 舊高
}
注意:
1、等比例縮放時,肯定會更新的寬度或新的高度。
添加水印
bool imagecopy ( 要圖, 水圖, 要圖x , 要圖y , 水圖x , 水圖y , 水圖寬 , 水圖高 )
要圖x,要圖y指的是水印圖片應該在要加水印圖片的哪個位置。
水圖x,水圖y指的是相對於原來應該在的位置,向左上角進行偏移。