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/zh-tw/n/143088.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FOCG的頭像FOCG
上一篇 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

發表回復

登錄後才能評論