• 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 }
     
  • 相关阅读:
    js 读取XML
    JavaScript DOM 交换节点笔记
    JDBC学习总结 -- JDBC 快速入门 教程
    SQL 语句易错点讲解
    JAVA 他人博客收藏 (To be continue)
    <<MYSQL必知必会>> 入坑指南
    OpenGL 纹理学习总结
    BZOJ 3456 NTT图的计数 容斥
    洛谷1002 容斥原理+dfs OR DP
    51nod1565 FFT
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12543787.html
Copyright © 2020-2023  润新知