yangtaoknight 发表于 2010-6-4 11:23:48

新手急问!图片水印问题,高手回答一下

我想问一下,我做了三个50*50,60*60,110*110的白色背景的图片,把用户上传上来的图片,经过做成三种大小的图片缩略图,然后做为图片水印贴到白色背景上面,最后只能生成50*50图片,而60*60,110*110生成不了

jeongee 发表于 2010-6-4 12:02:48

贴你的代码

yangtaoknight 发表于 2010-6-4 13:32:54

//图片路径格式化
        function _image_format($size,$image){
                list($prefex,$ext) = explode('.',$image);
                return $prefex.'_'.$size.'.'.$ext;
        }

        /*
       * 上传图片
       */
        function upload_image() {
                $this->_checkLogin();
                $temp_file = $_FILES['photo']['tmp_name'];
                $size = $_FILES['photo']['size'];
                $image_type = array('jpg','png','gif','JPG','PNG','GIF');
                $save_path = '/data1/codeigniter/userhead/';
               
                $file_info = explode('.',$_FILES['photo']['name']);
                if(!in_array($file_info,$image_type)){
                        $this->_outputJsonRet('h00001');//非法的数据类型
                }
                if($size>1024*1024*3){
                        $this->_outputJsonRet('h00002');//文件不能大于1024*1024*3
                }
                $file_name = $this->user_id.'.'.$file_info;
                $targetFile =$save_path . $file_name;
                if(move_uploaded_file($temp_file,$targetFile)) {
                //        $targetFile_50= $this->_image_format(50,$targetFile);
                        $targetFile_60= $this->_image_format(60,$targetFile);
                        $targetFile_110 = $this->_image_format(110,$targetFile);
                        if(!$this->do_resize(110,$targetFile)){
                                $this->_outputJsonRet('e00003'); //压缩错误110
                        }
                        $this->do_water(110,$targetFile_110);

                        if(!$this->do_resize(60,$targetFile)){
                                $this->_outputJsonRet('e00002'); //压缩错误60
                        }
                        $this->do_water(60,$targetFile_60);

                        if(!$this->do_resize(50,$targetFile)){
                                $this->_outputJsonRet('e00001'); //压缩错误50
                        }
                        $this->do_water(50,$targetFile);
                       
                       
                        chmod($targetFile, 0755);
                       chmod($targetFile_60, 0755);
                        chmod($targetFile_110, 0755);
                       
                        $this->_outputJsonRet('s00001', $file_name );
                } else {
                        $this->_outputJsonRet('h00003');//头像上传失败
                }
               
        }

        //压缩图片
        function do_resize($size,$source,$quality = '100%'){
                $config['width']                         = $size;
                $config['height']                         = $size;
                $config['quality']                         = $quality;
                $config['image_library']         = 'gd2';
                $config['source_image']         = $source;
                if($size == 50){
                        $config['thumb_marker']                = '';
                } else {
                        $config['thumb_marker']                = '_'.$size;
                }
                $config['create_thumb']         = TRUE;
                $config['maintain_ratio']         = TRUE;
               
                $this->image_lib->initialize($config);
                $flag = true;
                if (!$this->image_lib->resize()){
                    $flag = false;
                }
                unset($config);
                $this->image_lib->clear();
                return $flag;
        }
        //水印处理
        function do_water($size,$source = ''){
                $config['source_image'] = '';
                switch($size){
                        case '110':
                        $config['source_image'] = '/data1/codeigniter/userhead/blank_110.jpg';
                        break;
                        case '60':
                        $config['source_image'] = '/data1/codeigniter/userhead/blank_60.jpg';
                        break;
                        case '50':
                        $config['source_image'] = '/data1/codeigniter/userhead/blank_50.jpg';
                        break;
                }
                $config['wm_type'] = 'overlay';
                $config['wm_opacity'] = 100;
                $config['wm_vrt_alignment'] = 'middle';
                $config['wm_hor_alignment'] = 'center';
                $config['wm_overlay_path'] = $source;
                $config['new_image'] = $source;
                $this->image_lib->initialize($config);
       
          $this->image_lib->watermark();
                unset($config);
                $this->image_lib->clear();

        }

haohailuo 发表于 2010-6-4 19:03:50

你一个一个执行看看能不能生成,比如说一次只生成50、60或者110的,感觉代码没问题

yangtaoknight 发表于 2010-6-7 11:40:11

问题解决,不过图片问题确实很麻烦

yangtaoknight 发表于 2010-6-7 11:44:12

建议还是用php原生的来处理图片
页: [1]
查看完整版本: 新手急问!图片水印问题,高手回答一下