123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- //裁剪图片
- function DoCropImage($add,$userid,$username){
- global $empire,$dbtbpre,$public_r,$class_r,$ecms_config,$efileftp_fr,$efileftp_dr;
- //参数处理
- $pic_x=(int)$add['pic_x'];
- $pic_y=(int)$add['pic_y'];
- $pic_w=(int)$add['pic_w'];
- $pic_h=(int)$add['pic_h'];
- $doing=(int)$add['doing'];
- $fileid=(int)$add['fileid'];
- $filepass=(int)$add['filepass'];
- $classid=(int)$add['classid'];
- $infoid=(int)$add['infoid'];
- $modtype=(int)$add['modtype'];
- $fstb=0;
- if(empty($modtype))
- {
- $fstb=GetInfoTranFstb($classid,$infoid,0);
- }
- //取得文件地址
- if(empty($fileid))
- {
- printerror('NotCropImage','history.go(-1)');
- }
- $filer=$empire->fetch1("select fileid,path,filename,classid,fpath,no from ".eReturnFileTable($modtype,$fstb)." where fileid='$fileid'");
- if(empty($filer['fileid']))
- {
- printerror('NotCropImage','history.go(-1)');
- }
- $path=$filer['path']?$filer['path'].'/':$filer['path'];
- $fspath=ReturnFileSavePath($filer['classid'],$filer['fpath']);
- $big_image_name=eReturnEcmsMainPortPath().$fspath['filepath'].$path.$filer['filename'];//moreport
- if(!file_exists($big_image_name))
- {
- printerror('NotCropImage','history.go(-1)');
- }
- $filetype=GetFiletype($filer['filename']);//取得文件类型
- if(!strstr($ecms_config['sets']['tranpicturetype'],','.$filetype.','))
- {
- printerror('CropImageFiletypeFail','history.go(-1)');
- }
- //目标图片
- $new_datepath=FormatFilePath($filer['classid'],'',0);
- $new_path=$new_datepath?$new_datepath.'/':$new_datepath;
- $new_insertfile=ReturnDoTranFilename($filer['filename'],0);
- $new_fspath=ReturnFileSavePath($filer['classid']);
- $new_savepath=eReturnEcmsMainPortPath().$new_fspath['filepath'].$new_path;//moreport
- $new_name=$new_savepath.$new_insertfile;
- //处理图片
- $returnr['file']='';
- $returnr['filetype']='';
- if($temp_img_type = @getimagesize($big_image_name)) {preg_match('/\/([a-z]+)$/i', $temp_img_type[mime], $tpn); $img_type = $tpn[1];}
- else {preg_match('/\.([a-z]+)$/i', $big_image_name, $tpn); $img_type = $tpn[1];}
- $all_type = array(
- "jpg" => array("create"=>"ImageCreateFromjpeg", "output"=>"imagejpeg" , "exn"=>".jpg"),
- "gif" => array("create"=>"ImageCreateFromGIF" , "output"=>"imagegif" , "exn"=>".gif"),
- "jpeg" => array("create"=>"ImageCreateFromjpeg", "output"=>"imagejpeg" , "exn"=>".jpg"),
- "png" => array("create"=>"imagecreatefrompng" , "output"=>"imagepng" , "exn"=>".png"),
- "wbmp" => array("create"=>"imagecreatefromwbmp", "output"=>"image2wbmp" , "exn"=>".wbmp")
- );
- $func_create = $all_type[$img_type]['create'];
- if(empty($func_create) or !function_exists($func_create))
- {
- printerror('CropImageFiletypeFail','history.go(-1)');
- }
- //输出
- $func_output = $all_type[$img_type]['output'];
- $func_exname = $all_type[$img_type]['exn'];
- if(($func_exname=='.gif'||$func_exname=='.png'||$func_exname=='.wbmp')&&!function_exists($func_output))
- {
- $func_output='imagejpeg';
- $func_exname='.jpg';
- }
- $big_image = $func_create($big_image_name);
- $big_width = imagesx($big_image);
- $big_height = imagesy($big_image);
- if(!$big_width||!$big_height||$big_width<10||$big_height<10)
- {
- printerror('CropImageFilesizeFail','history.go(-1)');
- }
- if(function_exists("imagecopyresampled"))
- {
- $temp_image=imagecreatetruecolor($pic_w,$pic_h);
- imagecopyresampled($temp_image, $big_image, 0, 0, $pic_x, $pic_y, $pic_w, $pic_h, $pic_w, $pic_h);
- }
- else
- {
- $temp_image=imagecreate($pic_w,$pic_h);
- imagecopyresized($temp_image, $big_image, 0, 0, $pic_x, $pic_y, $pic_w, $pic_h, $pic_w, $pic_h);
- }
- $func_output($temp_image, $new_name.$func_exname);
- ImageDestroy($big_image);
- ImageDestroy($temp_image);
- $insert_file=$new_name.$func_exname;
- $insert_filename=$new_insertfile.$func_exname;
- if(file_exists($insert_file))
- {
- if(!$doing)
- {
- $empire->query("delete from ".eReturnFileTable($modtype,$fstb)." where fileid='$fileid'");
- DelFiletext($big_image_name);
- //FileServer
- if($public_r['openfileserver'])
- {
- $efileftp_dr[]=$big_image_name;
- }
- }
- //写入数据库
- $no='[CropImg]'.$filer['no'];
- $filesize=filesize($insert_file);
- $filesize=(int)$filesize;
- $classid=(int)$classid;
- $type=1;
- eInsertFileTable($insert_filename,$filesize,$new_datepath,$username,$classid,$no,$type,$filepass,$filepass,$public_r[fpath],0,$modtype,$fstb);
- //FileServer
- if($public_r['openfileserver'])
- {
- $efileftp_fr[]=$insert_file;
- }
- }
- echo"<script>opener.ReloadChangeFilePage();window.close();</script>";
- db_close();
- exit();
- }
- ?>
|