用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2680|回复: 5
收起左侧

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

[复制链接]
发表于 2010-6-4 11:23:48 | 显示全部楼层 |阅读模式
我想问一下,我做了三个50*50,60*60,110*110的白色背景的图片,把用户上传上来的图片,经过做成三种大小的图片缩略图,然后做为图片水印贴到白色背景上面,最后只能生成50*50图片,而60*60,110*110生成不了
发表于 2010-6-4 12:02:48 | 显示全部楼层
贴你的代码
 楼主| 发表于 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[1],$image_type)){
                        $this->_outputJsonRet('h00001');  //非法的数据类型
                }
                if($size>1024*1024*3){
                        $this->_outputJsonRet('h00002');  //文件不能大于1024*1024*3
                }
                $file_name = $this->user_id.'.'.$file_info[1];
                $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();

        }
发表于 2010-6-4 19:03:50 | 显示全部楼层
你一个一个执行看看能不能生成,比如说一次只生成50、60或者110的,感觉代码没问题
 楼主| 发表于 2010-6-7 11:40:11 | 显示全部楼层
问题解决,不过图片问题确实很麻烦
 楼主| 发表于 2010-6-7 11:44:12 | 显示全部楼层
建议还是用php原生的来处理图片

本版积分规则