PHP-GD庫

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 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指的是相對於原來應該在的位置,向左上角進行偏移。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章