base64图片上传服务器以及图片翻转顺时针翻转和逆时针翻转

            最近做一个H5活动的时候遇到问题,在做人脸识别的时候出现本地上传文件太大从而无法识别人脸,这是接口的大小限制,需要先在前端压缩,将返回的base64格式的二进制文件图片字符串上传到服务器,使用的下面的方法.

                 $base64_img = trim($_POST['img']); //POST接收图片base64格式
                 $dates=date("Y-m-d");  //这是我的图片上层目录
                 $path="http://www.*****.com";  //服务器网址网址
                 $rand=md5(microtime(true));    //生成的图片名字
                 $up_dir = './Upload/'.$dates.'/';//存放在当前目录下
                 if(!file_exists($up_dir)){
                     mkdir($up_dir,0777);
                 }
                 if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_img, $result)){
                     $type = $result[2];
                     if(in_array($type,array('jpeg','jpg','gif','bmp','png'))){
                         $new_file = $up_dir.$rand.'.'.$type;
                         if(file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_img)))){
                             $img_path = str_replace('../../..', '', $new_file); 
                             echo $path.substr($img_path,1);  //拼接网址并输出
                         }else{
                             echo '图片上传失败</br>';
                         }
                     }else{
                         //文件类型错误
                         echo '图片上传类型错误';
                     }
                 }else{
                     //文件错误
                     echo '文件错误';
                 }
             }else{
                 echo "参数不正确";
             }

     先解决了图片上传,然后ios上传图片时候出现了图片翻转的问题,最后找到一个可以使用的方法.直接调用方法即可.

  //src 图片完整路径
  //$direction 1顺时针90   2 逆时针90
function imgturn($src,$direction=1)
  {
      $ext = pathinfo($src)['extension'];
      switch ($ext) {
          case 'gif':
              $img = imagecreatefromgif($src);
              break;
          case 'jpg':
          case 'jpeg':
              $img = imagecreatefromjpeg($src);
              break;
          case 'png':
              $img = imagecreatefrompng($src);
              break;
          default:
              die('图片格式错误!');
              break;
      }
      $width = imagesx($img);
      $height = imagesy($img);
      $img2 = imagecreatetruecolor($height,$width);
      //顺时针旋转90度
      if($direction==1)
      {
          for ($x = 0; $x < $width; $x++) {
              for($y=0;$y<$height;$y++) {
                  imagecopy($img2, $img, $height-1-$y,$x, $x, $y, 1, 1);
              }
          }
      }else if($direction==2) {
          //逆时针旋转90度
          for ($x = 0; $x < $height; $x++) {
              for($y=0;$y<$width;$y++) {
                  imagecopy($img2, $img, $x, $y, $width-1-$y, $x, 1, 1);
              }
          }
      }

     建议直接用下面的方法,经过我实践下面的方法能够翻转图片角度并直接上传图片,效率和实用性很高.

另外向大家推荐另一种IOS图片翻转的解决方案,博客原文:https://www.cnblogs.com/mumuxinfei/p/5523798.html

      或 https://www.jb51.net/article/105767.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值