您的位置:

php做上传头像裁剪,php用户头像上传

本文目录一览:

怎么实现php上传图片并可以裁剪的功能,类似一些网站的头像截取,裁剪可以用jcrop插件。高分悬赏

php本身有裁剪图片的函数,js的截取一般是获得几个坐标,供这个函数作为参数,php在图片上传到服务器临时空间的时候,对图片进行裁剪,再按编程人的需求保存到指定目录。

百度下现成的,或者翻翻手册。

php怎么上传头像

php上传头像的功能需要掌握的就是有关文件上传类的php知识,需要知道的图片的格式,图片上传大小的限制,需要用到的函数有is_uploaded_file(文件上传的方式)等等,这里举个例子:

$allowType = array('image/png', 'image/jpeg', 'image/gif');

//做上传图片的验证

//使用try/catch来做判断

try{

if ( !is_uploaded_file($_FILES['thumb']['tmp_name']) ) {

throw new Exception('缩略图上传错误'); //抛出错误

}

if ( !is_uploaded_file($_FILES['img']['tmp_name']) ) {

throw new Exception('大图上传错误'); //抛出错误

}

if ( !in_array($_FILES['thumb']['type'], $allowType) ) {

throw new Exception('缩略图格式错误'); //抛出错误

}

if ( !in_array($_FILES['img']['type'], $allowType) ) {

throw new Exception('大图格式错误'); //抛出错误

}

if ( !($_FILES['thumb']['size'] = 2*1024*1024) ) {

throw new Exception('缩略图大小错误'); //抛出错误

}

if ( !($_FILES['img']['size'] = 2*1024*1024) ) {

throw new Exception('大图大小错误'); //抛出错误

}

$thumb_filename = time().mt_rand().substr($_FILES['thumb']['name'], strrpos($_FILES['thumb']['name'], '.'));

$img_filename = mt_rand().time().substr($_FILES['img']['name'], strrpos($_FILES['img']['name'], '.'));

if ( !move_uploaded_file($_FILES['thumb']['tmp_name'], UPLOAD_PATH.'/goods/'.$thumb_filename) ) {

throw new Exception('缩略图上传失败'); //抛出错误

}

if ( !move_uploaded_file($_FILES['img']['tmp_name'], UPLOAD_PATH.'/goods/'.$img_filename) ) {

throw new Exception('大图上传失败'); //抛出错误

}

} catch ( Exception $e ) {

$message = $e-getMessage();

}

这个函数实现了对图片的类型的判断,大小的判断,还有上传图片的命名。

thinkphp3.1头像剪切上传怎么把jquery剪切好的图片上传保存到数据库?

canvas

转成

base64位,然后得到图片的编码,然后上传到数据库

Thinkphp上传图片手动剪切功能谁有?tp框架

?php

include 'config.php';

class controller

{

    // ajax 上传头像图片

    public function ajax_upload_avatar()

    {

        include('models'.DIRECTORY_SEPARATOR.'uploader.php');

        $uploader = new uploader( explode(', ', ALLOW_UPLOAD_IMAGE_TYPES), MAX_UPLOAD_SIZE );

        $result = $uploader-upload( 'tmp'.DIRECTORY_SEPARATOR );    // 先保存到临时文件夹

        $reponse = new stdClass();

        if( isset($result['success'])  $result['success'] )

        {

            include('models'.DIRECTORY_SEPARATOR.'gd.php');

            $src_path = 'tmp'.DIRECTORY_SEPARATOR.$uploader-get_real_name();

            $gd = new gd();

            $gd-open( $src_path );

            if( $gd-is_image() )

            {

                if( $gd-get_width()  AVATAR_WIDTH )

                {

                    $reponse-success = false;    // 传递给 file-uploader 表示服务器端已处理

                    $reponse-description = '您上传的图片宽度('.$gd-get_width().'像素)过小!最小需要'.AVATAR_WIDTH.'像素。';

                }

                else if( $gd-get_height()  AVATAR_HEIGHT )

                {

                    $reponse-success = false;    // 传递给 file-uploader 表示服务器端已处理

                    $reponse-description = '您上传的图片高度('.$gd-get_height().'像素)过小!最小需要'.AVATAR_HEIGHT.'像素。';

                }

                else

                {

                    $reponse-success = true;

                    $reponse-tmp_avatar = $uploader-get_real_name();

                    if($gd-get_width()AVATAR_MAX_WIDTH || $gd-get_height()  AVATAR_MAX_HEIGHT)

                    {

                        // 图片过大时按比例缩小,防止超大图片撑破页面

                        $gd-resize_to(AVATAR_MAX_WIDTH, AVATAR_MAX_HEIGHT, 'scale');

                        $gd-save_to( $src_path );

                    }

                }

            }

        }

        else if( isset($result['error']) )

        {

            $reponse-success = false;

            $reponse-description = $result['error'];

        }

        header('Content-type: application/json');

        echo json_encode($reponse);

    }

    // ajax 裁切头像图片

    public function ajax_crop()

    {

        $tmp_avatar = $_POST['tmp_avatar'];

        $x1 = $_POST['x1'];

        $y1 = $_POST['y1'];

        $x2 = $_POST['x2'];

        $y2 = $_POST['y2'];

        $w = $_POST['w'];

        $h = $_POST['h'];

        $reponse = new stdClass();

        $src_path = 'tmp'.DIRECTORY_SEPARATOR.$tmp_avatar;

        if(!file_exists($src_path))

        {

            $reponse-success = false;

            $reponse-description = '未找到图片文件';

        }

        else

        {

            include('models'.DIRECTORY_SEPARATOR.'gd.php');

            $gd = new gd();

            $gd-open( $src_path );

            if( $gd-is_image() )

            {

                $gd-crop($x1, $y1, $w, $h);

                $gd-resize_to(AVATAR_WIDTH, AVATAR_HEIGHT, 'scale_fill');

                $avatar_name = date('YmdHis').'_'.md5(uniqid()).'.'.$gd-get_type();

                $gd-save_to( 'avatars'.DIRECTORY_SEPARATOR.$avatar_name );

                setcookie('avatar', $avatar_name, time()+86400*30);    // 本示例程序仅在 cookie 中保存 

                /*

                实际应用中会有更多 保存头像代码

                ......

                */

                @unlink($src_path);

                $reponse-success = true;

                $reponse-avatar = $avatar_name;

                

                $reponse-description = '';

            }

            else

            {

                $reponse-success = false;

                $reponse-description = '该图片文件不是有效的图片';

            }

        }

        header('Content-type: application/json');

        echo json_encode($reponse);

    }

}

$task = isset($_GET['task'])?$_GET['task']:'';

if($task!='')

{

    $instance = new controller();

    $instance-$task();

}

?

为什么用PHP对上传图片进行裁剪的时候,没成功,而且连上传的原图都没了

加个base64_decode方法试试:

$src = imagecreatefromstring(base64_decode(file_get_contents($src_path)));

用php怎么做圆形头像

做法有两种:

第一种:就是用个透明的图片遮挡做头像,显示圆角头像。原理就是在头像上覆盖一张透明的图片,把四个角颜色设置成页面的背景颜色,中间透明。

第二种:在你上传头像的时候程序自动裁剪成圆的,保留原图片和新裁剪的图片就ok了。

希望能帮助到你...