热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

thinkphp框架如何利用GD库在图片上编写文字(代码范例)

本篇文章的主要内容是关于用GD库在图片上编写文字的代码范例,具有一定的参考价值,感兴趣的朋友可以学习了解一下,希望对你有帮助。
本篇文章的主要内容是关于用GD库在图片上编写文字的代码范例,具有一定的参考价值,感兴趣的朋友可以学习了解一下,希望对你有帮助。

THINK_IMAGE =  new Image();
        $this->THINK_UPLOAD =  new Upload();
    }

    /*
     * 保存base64文件
     * $img    string    base64类型的文件
     * $type   string    保存的文件类型
     *      app_user_head_img   用户头像
     *
     *
     */
    public function saveImg_base64($img = null , $type = null)
    {
        //获取保存图片配置
        $imgConfig_savePath = C("img_save.save_path");
        $imgConfig_size     = C("img_save.size");
        $saveFlag = false;
//        dump($imgConfig_savePath[$type]);
//        dump($imgConfig_size);

        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img, $result) && $imgConfig_savePath[$type])
        {

            $img_ext                = $result[2]; //图片后缀
            $img_header             = $result[1];//图片头信息
            $new_file_name          = date('Ymd').'/'.uniqid().'.'.$img_ext;
            $origin_img_path        = '';//原图的保存路径
            $origin_img_save_flag   = true;//
            foreach($imgConfig_savePath[$type] as $k => $v)
            {

                if(!is_dir($v.date('Ymd')))
                {
                    mkdir($v.date('Ymd'),0777,true);
                }

                if ($k == 'origin')
                {
                    //先保存一份原图,然后其他尺寸的保存直接调用原图路径origin_img_path.
                    $origin_res = file_put_contents($v.$new_file_name, base64_decode(str_replace($img_header, '', $img)));
                    if (!$origin_res)
                    {
                        $origin_img_save_flag = false;
                        break;
                    }
                    else
                    {
                        $saveFlag = $new_file_name;
                        $origin_img_path = $v.$new_file_name;
                        $this->THINK_IMAGE->open($origin_img_path);
                    }
                }
                else
                {
                    if ($origin_img_save_flag)
                    {
                        $width = $imgConfig_size[$type][$k]['w'];
                        $height = $imgConfig_size[$type][$k]['h'];
                        $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$new_file_name);
                    }

                }
            }

        }
        return $saveFlag;
    }


    /*
     *  保存file类型文件
     *
     */
    public function saveImg_file($img = null , $type = null)
    {

        //获取保存图片配置
        $imgConfig_savePath = C("img_save.save_path");
        $imgConfig_size     = C("img_save.size");
        $saveFlag = false;

        if ($img && $imgConfig_savePath[$type])
        {

            $origin_img_save_flag   = true;
            foreach($imgConfig_savePath[$type] as $k => $v)
            {

                if(!is_dir($v.date('Ymd')))
                {
                    mkdir($v.date('Ymd'),0777,true);
                }

                if ($k == 'origin')
                {
                    $this->THINK_UPLOAD->rootPath = $v;
                    $this->THINK_UPLOAD->subName = date('Ymd');
                    $this->THINK_UPLOAD->saveName = array('uniqid','');
                    $saveRes = $this->THINK_UPLOAD->uploadOne($img);
                    if (!$saveRes)
                    {
                        $origin_img_save_flag = false;
                    }
                    else
                    {
                        $saveFlag = true;
                        $origin_img_path = $v.$saveRes['savepath'].$saveRes['savename'];
                        $this->THINK_IMAGE->open($origin_img_path);
                        $fileName = $saveRes['savepath'].$saveRes['savename'];
                    }
                }
                else
                {
                    if ($origin_img_save_flag)
                    {
                        $width = $imgConfig_size[$type][$k]['w'];
                        $height = $imgConfig_size[$type][$k]['h'];
                        $compress_img_path=$v.$fileName;
                        $saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName);

                        if (!$saveFlag)
                        {
                            $saveFlag = false;
                            $origin_img_save_flag = false;
                        }

                    }

                }


            }

            if($saveFlag)
            {
                #$saveFlag = $fileName;
                $saveFlag = array('origin'=>get_current_Host().'/'.$origin_img_path,'compress'=>get_current_Host().'/'.$compress_img_path);
            }

        }
        return $saveFlag;
    }

    public function save_file($img = null , $type = null)
    {

        //获取保存图片配置
        $imgConfig_savePath = C("img_save.save_path");
        $saveFlag = false;

        if ($img && $imgConfig_savePath[$type]) {


                if (!is_dir($imgConfig_savePath[$type] . date('Ymd'))) {
                    mkdir($imgConfig_savePath[$type] . date('Ymd'), 0777, true);
                }
                $this->THINK_UPLOAD->rootPath = $imgConfig_savePath[$type];
                $this->THINK_UPLOAD->subName = date('Ymd');
                $this->THINK_UPLOAD->saveName = array('uniqid', '');
                $saveRes = $this->THINK_UPLOAD->uploadOne($img);
                if ($saveRes) {
                    $saveFlag = true;
                    $origin_img_path = $imgConfig_savePath[$type] . $saveRes['savepath'] . $saveRes['savename'];

                    //$fileName = $saveRes['savepath'] . $saveRes['savename'];
                }
            }


            if($saveFlag)
            {
                $saveFlag = $origin_img_path;
                return get_current_Host().'/'.$saveFlag;
            }else
            {
                return $saveFlag;
            }


    }




    /*
     *  保存file类型文件,多文件
     *
     */
    public function saveImgs_files($imgs = null , $type = null)
    {

        //获取保存图片配置s
        $imgConfig_savePath = C("img_save.save_path");
        $imgConfig_size     = C("img_save.size");
        $saveFlag = false;
        $imgResArr = array();//保存图片路径
        $origin_img_path = array();//原图路径

        if ($imgs && $imgConfig_savePath[$type])
        {

            $origin_img_save_flag   = true;
            foreach($imgConfig_savePath[$type] as $k => $v)
            {

                if(!is_dir($v.date('Ymd')))
                {
                    mkdir($v.date('Ymd'),0777,true);
                }

                if ($k == 'origin')
                {
                    $this->THINK_UPLOAD->rootPath = $v;
                    $this->THINK_UPLOAD->subName = date('Ymd');
                    $this->THINK_UPLOAD->saveName = array('uniqid','');
                    $saveRes = $this->THINK_UPLOAD->upload($imgs);

                    if ($saveRes)
                    {
                        $saveFlag = true;
                        foreach ($saveRes as $srK => $srV)
                        {
                            $origin_img_path[] = $v.$saveRes[$srK]['savepath'].$saveRes[$srK]['savename'];
                            $fileName = $saveRes[$srK]['savepath'].$saveRes[$srK]['savename'];
                            $imgResArr[] = $fileName;
                        }


                    }
                }
                else
                {
                    foreach($origin_img_path as $oipK => $oipV)
                    {
                        if ($saveFlag)
                        {
                            $width = $imgConfig_size[$type][$k]['w'];
                            $height = $imgConfig_size[$type][$k]['h'];
                            $this->THINK_IMAGE->open($oipV);
                            $saveThumb = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$imgResArr[$oipK]);
                            if (!$saveThumb)
                            {
                                $saveFlag = false;
                                break;
                            }
                        }
                    }

                }

            }

            if ($saveFlag)
            {
                $saveFlag = $imgResArr;
            }
        }
        return $saveFlag;
    }

    /*
     * 保存微信头像 - url
     *
     */
    public function save_WxImg($picUrl = '',$type = null)
    {

        $ch = curl_init($picUrl);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_NOBODY, 0);    //对body进行输出。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $package = curl_exec($ch);
        $httpInfo = curl_getinfo($ch);
        curl_close($ch);
        $media = array_merge(array('mediaBody' => $package), $httpInfo);

        //求出文件格式
        preg_match('/\w\/(\w+)/i', $media["content_type"], $extmatches);
        $fileExt = $extmatches[1];

        $saveName = md5(microtime(true)).".{$fileExt}";

        //获取保存图片配置
        $imgConfig_savePath = C("img_save.save_path");
        $imgConfig_size     = C("img_save.size");
        $saveFlag = false;

        if ($imgConfig_savePath[$type])
        {

            $origin_img_save_flag   = true;
            foreach($imgConfig_savePath[$type] as $k => $v)
            {

                if(!is_dir($v.date('Ymd')))
                {
                    mkdir($v.date('Ymd'),0777,true);
                }

                if ($k == 'origin')
                {
                    file_put_contents($v.'/'.date('Ymd').'/'.$saveName,$media['mediaBody']);

                    $origin_img_path = $v.'/'.date('Ymd').'/'.$saveName;
                    $this->THINK_IMAGE->open($origin_img_path);
                    $fileName = date('Ymd').'/'.$saveName;
                }
                else
                {
                    if ($origin_img_save_flag)
                    {
                        $width = $imgConfig_size[$type][$k]['w'];
                        $height = $imgConfig_size[$type][$k]['h'];
                        $saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName);

                        if (!$saveFlag)
                        {
                            $saveFlag = false;
                            $origin_img_save_flag = false;
                        }
                        else
                        {
                            $saveFlag = $fileName;
                        }
                    }

                }
            }
        }
        return $saveFlag;

    }

    /*
     *  保存file类型文件
     *
     */
    public function saveImg_Wx($WxImg = array() , $type = null)
    {

        //获取保存图片配置
        $imgConfig_savePath = C("img_save.save_path");
        $imgConfig_size     = C("img_save.size");
        $saveFlag = false;
        $imgResArr = array();
        
        if ($WxImg && $imgConfig_savePath[$type])
        {


            foreach ($WxImg as $wiK => $wiV)
            {

                $wxImg = $this->getWxImg($wiV);

                $origin_img_save_flag   = true;
                foreach($imgConfig_savePath[$type] as $k => $v)
                {

                    if(!is_dir($v.date('Ymd')))
                    {
                        mkdir($v.date('Ymd'),0777,true);
                    }

                    if ($k == 'origin')
                    {
                        file_put_contents($v.'/'.date('Ymd').'/'.$wxImg['saveName'],$wxImg['imgMedia']['mediaBody']);

                        $origin_img_path = $v.'/'.date('Ymd').'/'.$wxImg['saveName'];
                        $this->THINK_IMAGE->open($origin_img_path);
                        $fileName = date('Ymd').'/'.$wxImg['saveName'];
                        $imgResArr[] = $fileName;
                    }
                    else
                    {
                        if ($origin_img_save_flag)
                        {
                            $width = $imgConfig_size[$type][$k]['w'];
                            $height = $imgConfig_size[$type][$k]['h'];
                            $saveFlag = $this->THINK_IMAGE->thumb($width, $height,3)->save($v.$fileName);

                            if (!$saveFlag)
                            {
                                $saveFlag = false;
                                $origin_img_save_flag = false;
                            }
                            else
                            {
                                $saveFlag = $fileName;
                            }
                        }

                    }
                }
            }


            if($saveFlag)
            {
                $saveFlag = $imgResArr;
            }

        }
        return $saveFlag;
    }
  

    /*
     * 保存用户的推广图片   在图片上写字!!!!
     */
    public function save_userShareImg($bg_img_path = '' , $head_img_path = '' , $qrCode_img_path = '' , $saveFile = '' , $userName = '' , $userDscp = '' , $font_path = '')
    {

        
        //设置头像图片为圆角
        $head_img_radius = $this->radius_img($head_img_path,240);
        //合并到背景图中
        $this->mergeImage($bg_img_path,$head_img_radius,$saveFile,array('left' => 200, 'top' => 55, 'width' => 480, 'height' => 480));
        //设置名称
        $this->writeText($saveFile, $saveFile, $userName,255,255,255,1010,32,$font_path, array());
        //设置二维码内容
        $this->mergeImage($saveFile,$qrCode_img_path,$saveFile,array('left' => 255, 'top' => 684, 'width' => 250, 'height' => 245));

        return $saveFile;
    }

    /*
     * 合并图片
     */
    private function mergeImage($bg_img, $main_img, $saveFile, $param)
    {

        extract($param);
//        list($bgWidth, $bgHeight) = getimagesize($bg_img);
        $bgImg = $this->imagecreate($bg_img);
        if (!is_resource($main_img))
        {
            list($mainWidth, $mainHeight) = getimagesize($main_img);
            $mainImg = $this->imagecreate($main_img);
        }
        else
        {
            $mainImg = $main_img;

            $mainWidth = $width;
            $mainHeight = $height;
        }
        imagecopyresized($bgImg, $mainImg, $left, $top, 0, 0, $width, $height, $mainWidth, $mainHeight);
//        imagecopyresized($bgImg, $mainImg, $left, $top, 0, 0, $width, $height, $width,$height);
        ob_start();
        // output jpeg (or any other chosen) format & quality
        imagejpeg($bgImg, NULL, 100);
        $cOntents= ob_get_contents();
        ob_end_clean();
        imagedestroy($bgImg);
        imagedestroy($mainImg);
        $fh = fopen($saveFile, "w+");
        fwrite($fh, $contents);
        fclose($fh);
    }

    /*
     * 图片写文字
     * $bg_img 背景图片
     * $saveFile 保存图片路径
     * $text 文字
     * $fontColor 字体颜色
     * $top 图片距离顶端高度
     * $fontSize 字体大小
     * $font 字体路径
     * $param 传递的参数
     */
    private function writeText($bg_img, $saveFile, $text, $colorR,$colorG,$colorB , $top , $fontSize , $font , $param = array())
    {
        list($bgWidth, $bgHeight) = getimagesize($bg_img);
        $im = imagecreatefromjpeg($bg_img);

        $fOntColor= imagecolorallocate($im, $colorR, $colorG, $colorB);//字的RGB颜色
        $str = mb_convert_encoding($text, "html-entities", "utf-8");;//解决乱码问题

        $fOntBox= imagettfbbox($fontSize, 0, $font, $str);//文字水平居中实质
        $width = imagesx($im);
        imagettftext($im, $fontSize, 0, ceil(($width - $fontBox[2]) / 2), $top, $fontColor, $font, $str);


        ob_start();
        // output jpeg (or any other chosen) format & quality
        imagejpeg($im, NULL, 100);
        $cOntents= ob_get_contents();
        ob_end_clean();
        imagedestroy($im);
        $fh = fopen($saveFile, "w+");
        fwrite($fh, $contents);
        fclose($fh);
    }

    /**
     * 处理圆角图片
     * @param  string $imgPath 源图片路径
     * @param  integer $radius 圆角半径长度默认为15,处理成圆型
     * @return [type]           [description]
     */
    public function radius_img($imgPath = '', $radius = 65)
    {
        $ext = pathinfo($imgPath);
        $src_img = null;
        switch ($ext['extension']) {
            case 'jpg':
                $src_img = imagecreatefromjpeg($imgPath);
                break;
            case 'png':
                $src_img = imagecreatefrompng($imgPath);
                break;
            default:
                $src_img = imagecreatefromjpeg($imgPath);
                break;
        }
        $wh = getimagesize($imgPath);
        $w = $wh[0];
        $h = $wh[1];
        // $radius = $radius == 0 ? (min($w, $h) / 2) : $radius;
        $img = imagecreatetruecolor($w, $h);
        //这一句一定要有
        imagesavealpha($img, true);
        //拾取一个完全透明的颜色,最后一个参数127为全透明
        $bg = imagecolorallocatealpha($img, 255, 255, 255, 127);
        imagefill($img, 0, 0, $bg);
        $r = $radius; //圆 角半径
        for ($x = 0; $x <$w; $x++) {
            for ($y = 0; $y <$h; $y++) {
                $rgbColor = imagecolorat($src_img, $x, $y);
                if (($x >= $radius && $x <= ($w - $radius)) || ($y >= $radius && $y <= ($h - $radius))) {
                    //不在四角的范围内,直接画
                    imagesetpixel($img, $x, $y, $rgbColor);
                } else {
                    //在四角的范围内选择画
                    //上左
                    $y_x = $r; //圆心X坐标
                    $y_y = $r; //圆心Y坐标
                    if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
                        imagesetpixel($img, $x, $y, $rgbColor);
                    }
                    //上右
                    $y_x = $w - $r; //圆心X坐标
                    $y_y = $r; //圆心Y坐标
                    if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
                        imagesetpixel($img, $x, $y, $rgbColor);
                    }
                    //下左
                    $y_x = $r; //圆心X坐标
                    $y_y = $h - $r; //圆心Y坐标
                    if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
                        imagesetpixel($img, $x, $y, $rgbColor);
                    }
                    //下右
                    $y_x = $w - $r; //圆心X坐标
                    $y_y = $h - $r; //圆心Y坐标
                    if (((($x - $y_x) * ($x - $y_x) + ($y - $y_y) * ($y - $y_y)) <= ($r * $r))) {
                        imagesetpixel($img, $x, $y, $rgbColor);
                    }
                }
            }
        }
        return $img;
    }

    private function imagecreate($bg)
    {
        $bgImg = @imagecreatefromjpeg($bg);
        if (FALSE == $bgImg) {
            $bgImg = @imagecreatefrompng($bg);
        }
        if (FALSE == $bgImg) {
            $bgImg = @imagecreatefromgif($bg);
        }
        return $bgImg;
    }


    /*
     * 下载微信服务器的图片
     * media_id    微信的媒体id
     * type        保存图片类型
     * */
    public function getWxImg($mediaId)
    {
        if(!class_exists(&#39;\JSSDK&#39;) && !class_exists(&#39;\WxPayConfig&#39;))
        {
            vendor(&#39;wxsdkapi.jssdk&#39;);
            vendor(&#39;wxpayapi.lib.WxPay#Config&#39;);
        }
        $res = new \JSSDK(C(&#39;WEIXINPAY_CONFIG.APPID&#39;),C(&#39;WEIXINPAY_CONFIG.APPSECRET&#39;));
        $accessToken = $res->getAccessToken();
    
//    $mediaId = &#39;cVqPIhDPPThUtayzS27GK6RN4-dseA6AZnTJxcg7_VaeuAaKcL53X32hmKxhgiSD&#39;;
//    $accessToken = &#39;KHaopJY444kJ06LcH9ESj-73pkEfFTgIr3L45RURuUxv1KTjgXyFepJ-cTIF_oUyAKyYb5dK2r9L_wC-WDw2USqGQBMobC6DzPImuhPqxB8jxZ41CuLDtJiaEZk8Vf5kWSSjAAAAWW&#39;;
        $picUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$accessToken&media_id=$mediaId";

        $ch = curl_init($picUrl);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_NOBODY, 0);    //对body进行输出。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $package = curl_exec($ch);
        $httpInfo = curl_getinfo($ch);
        curl_close($ch);
        $media = array_merge(array(&#39;mediaBody&#39; => $package), $httpInfo);

        //求出文件格式
        preg_match(&#39;/\w\/(\w+)/i&#39;, $media["content_type"], $extmatches);
        $fileExt = $extmatches[1];

        $saveName = md5(microtime(true)).".{$fileExt}";

        $img = array(&#39;imgMedia&#39;=>$media,&#39;saveName&#39;=>$saveName);

        return $img;
    }
        /*
     * 下载微信服务器的图片
     * media_id    微信的媒体id
     * type        保存图片类型
     * */
    public function getWxImg2($mediaId,$file)
    {
        if(!class_exists(&#39;\JSSDK&#39;) && !class_exists(&#39;\WxPayConfig&#39;))
        {
            vendor(&#39;wxsdkapi.jssdk&#39;);
            vendor(&#39;wxpayapi.lib.WxPay#Config&#39;);
        }
        $res = new \JSSDK(C(&#39;WEIXINPAY_CONFIG.APPID&#39;),C(&#39;WEIXINPAY_CONFIG.APPSECRET&#39;));
        $accessToken = $res->getAccessToken();
        $picUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=$accessToken&media_id=$mediaId";
    
        
       

        return httpcopy($picUrl,$file);
    }

}

调用方法:

/**
     * 生成图片
     * @param varchar  tid 任务id
     * @httpmethod POST
     * @response 响应数据
     * {
     *   "ResultType": "1000",
     *   "Message": "上传成功",
     *   "AppendData": "图片路径",
     * }
     */
    public function UploadNavImg()
    {
        $tid=Util::getSafeText(I(&#39;post.tid&#39;));
        $imgEven = A(&#39;Gszc/Img&#39;,&#39;Event&#39;);
        //查出公司名称
        $res = M(&#39;gszc_tasks as t&#39;)
            ->join(&#39;app_gszc_userinfo as u on u.tid=t.id&#39;)
            ->where(&#39;t.id=&#39;.$tid)
            ->field(&#39;u.*,t.lastname&#39;)
            ->find();

        //主营业务范围
        $zyywfws = explode(&#39;、&#39;,$res[&#39;zyywfw&#39;]);
        $zyywfw = array_slice($zyywfws, 0,3);  //获取前三个主营业范围
        $zyywfw2 = array_slice($zyywfws, 3,6);  //获取后三个主营业务范围

        $imageName = date("His",time())."_".rand(1111,9999).&#39;.jpg&#39;;
        $dir = date(&#39;Ymd&#39;);
        $path = &#39;uploads/company/&#39;.$dir;
        if (!is_dir($path)){ //判断目录是否存在 不存在就创建
            mkdir($path,0777,true);
        }
        $img = $imgEven->save_userShareImg($_SERVER[&#39;DOCUMENT_ROOT&#39;]."/uploads/test.png",&#39;&#39;,&#39;&#39;,$_SERVER[&#39;DOCUMENT_ROOT&#39;]."/".$path."/". $imageName,$res[&#39;lastname&#39;],$zyywfw, $zyywfw2, &#39;&#39;,$_SERVER[&#39;DOCUMENT_ROOT&#39;]."/uploads/PingFang Bold.ttf");

        if($img){
            //生成照片成功 保存到任务表里
            $tasks = M(&#39;gszc_tasks&#39;)->where(&#39;id=&#39;.$tid)->setField(&#39;lastpic&#39;,$path."/".$imageName);
            if($tasks){
                $lujing = $path."/".$imageName;
                $this->array_return[&#39;errno&#39;]=self::__OK__;
                $this->array_return[&#39;errmsg&#39;]=&#39;生成成功!&#39;;
                $this->array_return[&#39;data&#39;]= $lujing ;
                $this->ajaxReturn($this->array_return);
            }
        }else{
            $this->array_return[&#39;errno&#39;]=self::__ERROR__;
            $this->array_return[&#39;errmsg&#39;]=&#39;生成失败!&#39;;
            $this->array_return[&#39;data&#39;]=[];
            $this->ajaxReturn($this->array_return);
        }
    }

相关教程:PHP视频教程

以上就是thinkphp框架 如何利用GD库在图片上编写文字(代码范例)的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
author-avatar
杨仕卫123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有