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了。

希望能帮助到你…

原创文章,作者:FOCG,如若转载,请注明出处:https://www.506064.com/n/143088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FOCGFOCG
上一篇 2024-10-14 18:45
下一篇 2024-10-14 18:45

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • Python中接收用户的输入

    Python中接收用户的输入是一个常见的任务,可以通过多种方式来实现。本文将从以下几个方面对Python中接收用户的输入做详细阐述。 一、使用input函数接收用户输入 Pytho…

    编程 2025-04-29
  • Python弹框让用户输入

    本文将从多个方面对Python弹框让用户输入进行阐述,并给出相应的代码示例。 一、Tkinter弹窗 Tkinter是Python自带的图形用户界面(GUI)库,通过它可以创建各种…

    编程 2025-04-28
  • 百度网盘Python上传

    百度网盘是一个常用的云存储平台,提供了多种上传文件的方式,其中包括使用Python进行上传。本文将从安装Python、安装依赖库、上传文件三个方面进行详细阐述。 一、安装Pytho…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • 如何使用git拉出某个用户上传的文件?

    Git是一个非常流行的版本控制系统,它可以帮助团队协作,并保证代码的版本控制。有时候,我们需要拉出某个用户上传的文件,但不知道从哪里开始。本文将会从多个方面详细阐述如何使用git拉…

    编程 2025-04-28
  • Zookeeper ACL 用户 anyone 全面解析

    本文将从以下几个方面对Zookeeper ACL中的用户anyone进行全面的解析,并为读者提供相关的示例代码。 一、anyone 的作用是什么? 在Zookeeper中,anyo…

    编程 2025-04-28
  • 上传多媒体文件的常用方法——uploadmediabyurl

    uploadmediabyurl是一个非常常用的方法,它允许我们将本地的多媒体文件上传到微信服务器上。 一、uploadmediabyurl的基本使用方法 要使用uploadmed…

    编程 2025-04-27
  • Python中获取用户输入命令的方法解析

    本文将从多个角度,分别介绍Python中获取用户输入命令的方法,希望能够对初学者有所帮助。 一、使用input()函数获取用户输入命令 input()是Python中用于获取用户输…

    编程 2025-04-27

发表回复

登录后才能评论