微信扫一扫打赏支持

legend3---图片裁剪实例代码

legend3---图片裁剪实例代码

一、总结

一句话总结:

图片裁剪之后,图片尽量存为jpg,相比于png,jpg的图片要小很多

 

1、base64格式图片如何存储为jpg,如何存储为png?

存储为jpg就是canvas转base64的时候格式选jpeg,存png就是转的时候格式选png,转jpg例子:base64 = cas.toDataURL('image/jpeg'); // 转换为base64
var cas = $('#image_clip').cropper('getCroppedCanvas', {
    width : 150,
    height : 150
});// 获取被裁剪后的canvas
var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
var data = encodeURIComponent(base64);//作为URI编码

 

 

 

2、base64转png或者jpg时候,Data URL scheme 支持的类型有哪些?

常见的图片类型都支持,比如gif、png、jpeg等等,也就是可以把base64格式的数据转换为这些类型
data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/JavaScript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据

 

 

 

3、如何将base64图片转换为jpg图片?

和Data URL scheme相关,获取base64数据的时候选择jpeg方式:var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
var cas = $('#image_clip').cropper('getCroppedCanvas', {
    width : 150,
    height : 150
});// 获取被裁剪后的canvas
var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
var data = encodeURIComponent(base64);//作为URI编码

 

 

 

 

二、图片裁剪实例代码

博客对应课程的视频位置:

 

前端js代码:

 1 <script>
 2     function submit_clip_image() {
 3         //console.log('2222222222');
 4 
 5         var cas = $('#image_clip').cropper('getCroppedCanvas', {
 6             width : 150,
 7             height : 150
 8         });// 获取被裁剪后的canvas
 9         var base64 = cas.toDataURL('image/jpeg'); // 转换为base64
10         var data = encodeURIComponent(base64);//作为URI编码
11 
12         //之前的缩略图的图片
13         let old_user_img_url=$('#u_picture').val();
14         //console.log(old_user_img_url);
15         //console.log(data);
16 
17         let u_id=window.u_id;
18 
19         $.ajax({
20             url : "/component/uploader_img_base64",
21             type : 'POST',
22             data : {'u_id':u_id,'old_user_img_url':old_user_img_url,'base64_img':data},
23             success : function(data) {
24                 if(parseInt(data.valid)==1){
25                     $('#u_picture').val(data.message);
26                     $('.fry_file_uploader_img').attr({'src':data.message});
27                     //让上传图片的框框隐藏
28                     $('#fry_clip_user_img_box').hide();
29                     //console.log(data.message);
30                     layer_alert_success_mobile('头像上传成功!');
31                 }else{
32                     layer_alert_fail_mobile(data.message);
33                 }
34             }
35         });
36     }
37 </script>

 

后端php代码:

 1 //1、上传base64位的图片:用户的头像
 2 public function uploader_img_base64(Request $request){
 3 
 4     //用户id
 5     $u_id=Auth::guard('user')->user()->id;
 6     if(!$u_id){
 7         return ['valid' => 0, 'message' => '用户信息过期,请刷新页面重试!!'];
 8     }
 9 
10     $base64_img=$request->input('base64_img');
11     $base64_img=urldecode($base64_img);
12     //获取原图片的相对路径
13     $old_user_img_url=$request->input('old_user_img_url');
14     $position=stripos($old_user_img_url,'user_img/');
15     if(strlen($old_user_img_url)>$position+9)
16     $old_user_img_url_relative=substr($old_user_img_url,$position+9);
17 
18     preg_match('/^(data:\s*image\/(\w+);base64,)/',$base64_img,$res);
19 
20 
21     if (isset($res[2])) {
22         //获取图片类型
23         $type = $res[2];
24         if($type=='jpeg') $type='jpg';
25 
26         //图片保存路径
27         $new_file = ''.date('Ym',time()).'/';
28         //$new_file = "attachment/user_img/".date('Ymd',time()).'/';
29 
30         //图片名字
31         $new_file = $new_file.str_random(10).mt_rand(10000,99999).'.'.$type;
32         $base64_img=base64_decode(str_replace($res[1],'', $base64_img));
33         //dd($base64_img);
34         $ans=Storage::disk('user_img')->put($new_file, $base64_img);
35 
36         if ($ans) {
37             $ans2=Storage::disk('user_img')->delete($old_user_img_url_relative.'');
38             //dd($ans2);
39             $img_url=asset('attachment/user_img/'.$new_file);
40             //$img_url='attachment/user_img/'.$new_file;
41             //修改用户的头像
42             User::where('id',$u_id)->update(['picture'=>$img_url]);
43 
44             //unlink($old_user_img_url_relative.'');
45             return ['valid' => 1, 'message' => $img_url];
46         } else {
47             return ['valid' => 0, 'message' => '上传失败请重试!'];
48         }
49 
50     }else{
51         return ['valid' => 0, 'message' => '上传失败请重试!!'];
52     }
53 
54 }

 

 

 

 
posted @ 2020-03-22 01:49  范仁义  阅读(245)  评论(0)    收藏  举报