zoukankan      html  css  js  c++  java
  • 图片上传--base64

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    include_once (APPPATH . "controllers/admin/Auth.php");
    include_once (APPPATH.'libraries/PicUpload.php');
    class goodsInfo extends Auth { 
        //产品修改
        public function edit(){
            $tid=$this->newrow['tid'];
            //获取待修改的商品详细图片信息
            $ree['info']=$this->db->select('*')->from('goods_info')->where(array('tid'=>$tid))->get()->result_array();
            //根据id从硬盘上删除产品原图及缩略图和产品成分图片
            $pic=$this->db->select('ingredients,origin_pic,home_pic,product_cat_pic,detail_pic,cart_pic')
                    ->from('goods_info')
                    ->where(array('tid'=>$tid))
                    ->get()
                    ->result_array();
            $picture_upload=new PicUpload();
            if(!empty($this->newrow['origin_pic'])){
                unlink(OMG.ORIGIN.$pic[0]['origin_pic']);
                unlink(OMG.HOME.$pic[0]['home_pic']);
                unlink(OMG.PRODUCT.$pic[0]['product_cat_pic']);
                unlink(OMG.DETAIL.$pic[0]['detail_pic']);
                unlink(OMG.CART.$pic[0]['cart_pic']);
    
                $pic=$_POST['origin_pic'];
                //文件上传保存路径
                $image_file=OMG.ORIGIN;
    
                $upload_url=$picture_upload->pUpload($pic,'pic2',$image_file);
                $origin_pic=$upload_url['url_pic'];
                $origin_thumb_pic=OMG.ORIGIN.$origin_pic;
                $thumb_name=$upload_url['pri'];
                if(!$upload_url){
                    responseMsg ( 1, "图片上传失败!", null, 1, $this->prefix );
                    $this->db->trans_rollback();
                    return FALSE;
                }
    
                for($i=1;$i<5;$i++){
                    if($i==1){
                          $width = 408;
                          $height = 408;
                          //缩略后的保存路径
                          $save_home_pic=OMG.HOME."{$thumb_name}.png";
                          $home_pic="{$thumb_name}_thumb.png";
                          //生成缩略图1
                          //$origin_thumb_pic  要缩略的原图路径
                          $this->dealthumb($origin_thumb_pic,$save_home_pic,$width,$height);
                    }elseif($i==2){
                          $width = 270;
                          $height = 270;
                          //缩略后的保存路径
                          $save_product_cat_pic=OMG.PRODUCT."{$thumb_name}.png";
                          $product_cat_pic="{$thumb_name}_thumb.png";
                          //生成缩略图2
                          //$origin_thumb_pic  要缩略的原图路径
                          $this->dealthumb($origin_thumb_pic,$save_product_cat_pic,$width,$height);
                    }elseif($i==3){
                          $width = 680;
                          $height = 680;
                          //缩略后的保存路径
                          $save_detail_pic=OMG.DETAIL."{$thumb_name}.png";
                          $detail_pic="{$thumb_name}_thumb.png";
                          //生成缩略图3
                          //$origin_thumb_pic  要缩略的原图路径
                          $this->dealthumb($origin_thumb_pic,$save_detail_pic,$width,$height);
                    }else{
                          $width = 170;
                          $height= 170;
                          //缩略后的保存路径
                          $save_cart_pic=OMG.CART."{$thumb_name}.png";
                          $cart_pic="{$thumb_name}_thumb.png";
                          //生成缩略图4
                          //$origin_thumb_pic  要缩略的原图路径
                          $this->dealthumb($origin_thumb_pic,$save_cart_pic,$width,$height);
                    }
                }
            }else {
                $origin_pic = $ree['info'][0]['origin_pic'];
                $home_pic = $ree['info'][0]['home_pic'];
                $product_cat_pic = $ree['info'][0]['product_cat_pic'];
                $detail_pic = $ree['info'][0]['detail_pic'];
                $cart_pic = $ree['info'][0]['cart_pic'];
    
                //添加图片1
                $pic = $_POST['ingredients'];
                //文件上传保存路径
                $image_file = OMG . INGREDIENTS;
            }
            responseMsg ( 0, "success",null, 1,$this->prefix );
        }
       /*
        * 生成缩略图
        * @param  $path 原图的本地路径
        * @param  $newPath 缩略图存储路径
        */
        private function dealthumb($path,$newPath,$width,$height){
            $config['image_library'] = 'gd2';
            $config['source_image'] = $path;
            $config['new_image'] = $newPath;
            $config['create_thumb'] = TRUE;
            //生成的缩略图将在保持纵横比例 在宽度和高度上接近所设定的width和height
            $config['maintain_ratio'] = TRUE;
            $config['width'] = $width;
            $config['height'] = $height;
            //载入图像处理类库
            $this->load->library('Image_lib');
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            $this->image_lib->clear();
        }
    }

    gmapiframeworkapplicationlibrariesPicUpload.php

    <?php
    $file = substr( $_SERVER["SCRIPT_FILENAME"], 0, stripos($_SERVER["SCRIPT_FILENAME"], "framework") );
    require_once("{$file}/config.php");
    class PicUpload{    
       /**
        * $pic  $name  $image_file
        */
        public function pUpload($pic,$name, $image_file){     
            $url_pic=array();
            //上传图片
            if(!empty($pic)){
                $url_pic=$this->upload($pic,$name,$image_file);
                if(empty($url_pic)){
                      return false;
                }
            }               
            $url=array(
                url_pic=>$url_pic['image_name'],
                pri=>$url_pic['pri']
            );
            return $url;
            
        }
        //字符串转图片
        private function upload($base64_image,$name,$image_file){               
            $file_size=strlen($base64_image);    //4.8kb 4925  8k
            // 验证文件条件是否符合
            if($file_size<= 0){ # 未上传文件
                   return false;
            }
            if($file_size>= 4088000){ # 图片大于400KB,结束传输
                   return false;
            }
            $base64_image = str_replace(' ', '+',$base64_image);//post
            if (preg_match('/^(data:s*image/(w+);base64,)/', $base64_image, $result)){
                   //匹配成功
                   if($result[2] == 'jpeg'){
                         $pri=date(YmdHis).$name;
                         $image_name =$pri .'.png';
                   }else{
                         $pri=date(YmdHis).$name;
                         $image_name =$pri.'.'.$result[2];
                   }
                   $image_file_1="{$image_file}{$image_name}";
                   //服务器文件存储路径
                   //$image_file_1  要写入数据的文件。如果文件不存在,则创建一个新文件。
                   //base64_decode(str_replace($result[1], '', $base64_image)) 要写入文件的数据。可以是字符串、数组或数据流。
                   if(file_put_contents($image_file_1, base64_decode(str_replace($result[1], '', $base64_image)))){
                         $data['image_name'] = $image_name;
                         $data['pri']=$pri;
                         return $data;
                   }else{
                         return false;
                   }                
            }else{
                   return false;
            }
        }
    }
  • 相关阅读:
    .Net在arraylist用法
    ORM查询方法
    正则表达式大全
    checkbox修改功能保存功能绑定
    Web ASP.Net运行机制
    面试题
    Sql Server 中锁的概念
    由nginx和spring boot中tomcat配置不当引起的问题
    记录一次由事务可重复读引起的问题
    Ubuntu18.04没有声音的解决
  • 原文地址:https://www.cnblogs.com/zouke1220/p/9109716.html
Copyright © 2011-2022 走看看