/** * Goofy 2011-11-29 * 影像處理:根據傳遞過來的座標參數,x,y,w,h,依次為選取的x座標,y座標,w寬度,h高度 * 通過imagecopy()方法將該地區copy至第一步建立的空白映像中 * 注意,在建立映像的時候要用imagecreatetruecolor()真彩色,不然用imagecreate()圖片會失真 */
- /**
- * Goofy 2011-11-29
- * 影像處理:根據傳遞過來的座標參數,x,y,w,h,依次為選取的x座標,y座標,w寬度,h高度
- * 通過imagecopy()方法將該地區copy至第一步建立的空白映像中
- * 注意,在建立映像的時候要用imagecreatetruecolor()真彩色,不然用imagecreate()圖片會失真
- */
- //頁面傳過來的比例
- $scale=$_GET['scale'];
- //下面的屬性乘以相應的比例
- $x=$_GET['x']*$scale;
- $y=$_GET['y']*$scale;
- $w=$_GET['w']*$scale;
- $h=$_GET['h']*$scale;
- //源路徑
- $src=$_GET['src'];
- //是否繼續?如果不繼續在這張圖片,會將源圖片刪除
- $again="off";
- if(!empty($_GET['again'])){
- $again=$_GET['again'];
- }
- //第一步,根據傳來的寬,高參數建立一幅圖片,然後正好將截取的部分真好填充到這個地區
- header("Content-type: image/jpeg");
- $target = @imagecreatetruecolor($w,$h)
- or die("Cannot Initialize new GD image stream");
- //第二步,根據路徑擷取到源映像,用源映像建立一個image對象
- $source = imagecreatefromjpeg($src);
- //第三步,根據傳來的參數,選取源映像的一部分填充到第一步建立的映像中
- imagecopy( $target, $source, 0, 0, $x, $y, $w, $h);
- //第四步,儲存映像
- //截取並組織新路徑
- $pos_path= strripos($src, "/");
- $newPath=substr($src,0,$pos_path-strlen($src))."_new/";
- //截取並組織新名稱
- $pos_name=strripos($src, ".");
- $newName=substr($src,0,$pos_name);
- $pos_name_= strripos($newName, "/");
- //這裡暫時不加尾碼“.jpg”,防止有重複的檔案,如果有,需要重新命名,加了後會不方便
- $newName=substr($newName,$pos_name_-strlen($newName)+1)."_";
- //產生不帶尾碼的圖片
- $file=$newPath.$newName;
- //附加asc碼重新命名檔案,也可以用隨機數,時間等命名,項目需求我不用那些命名方法了
- for($i=0;$i<26;$i++){
- //如果目錄存在
- if(is_dir($newPath)){
- //如果檔案存在,繼續迴圈,直到沒有重名的檔案
- if(is_file($file.chr(97+$i).".jpg")){
- continue;
- }else{
- //建立檔案
- imagejpeg($target,$file.chr(97+$i).".jpg",100);
- //檔案建立完成確定是否刪除源檔案,off為刪除源檔案
- if($again=="off"){
- unlink($src);
- unset($_SESSION['url']);
- }
- break;
- }
- }else{
- //建立目錄
- mkdir($newPath);
- //建立檔案
- imagejpeg($target,$file.chr(97+$i).".jpg",100);
- //檔案建立完成確定是否刪除源檔案,off為刪除源檔案
- if($again=="off"){
- unlink($src);
- unset($_SESSION['url']);
- }
- break;
- }
- }
- //跳轉到首頁
- Header("Location: index.php");
- ?>
複製代碼 |