本文目錄一覽:
- 1、怎麼實現php上傳圖片並可以裁剪的功能,類似一些網站的頭像截取,裁剪可以用jcrop插件。高分懸賞
- 2、php怎麼上傳頭像
- 3、thinkphp3.1頭像剪切上傳怎麼把jquery剪切好的圖片上傳保存到數據庫?
- 4、Thinkphp上傳圖片手動剪切功能誰有?tp框架
- 5、為什麼用PHP對上傳圖片進行裁剪的時候,沒成功,而且連上傳的原圖都沒了
- 6、用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-hant/n/143088.html