欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

jquery(Jcrop)+PHP根据坐标剪切图片

程序员文章站 2022-04-23 14:52:24
...
/** * Goofy 2011-11-29 * 图像处理:根据传递过来的坐标参数,x,y,w,h,依次为选取的x坐标,y坐标,w宽度,h高度 * 通过imagecopy()方法将该区域copy至第一步创建的空白图像中 * 注意,在创建图像的时候要用imagecreatetruecolor()真彩色,不然用imagecreate()图片会失真 */
  1. /**
  2. * Goofy 2011-11-29
  3. * 图像处理:根据传递过来的坐标参数,x,y,w,h,依次为选取的x坐标,y坐标,w宽度,h高度
  4. * 通过imagecopy()方法将该区域copy至第一步创建的空白图像中
  5. * 注意,在创建图像的时候要用imagecreatetruecolor()真彩色,不然用imagecreate()图片会失真
  6. */
  7. //页面传过来的比例
  8. $scale=$_GET['scale'];
  9. //下面的属性乘以相应的比例
  10. $x=$_GET['x']*$scale;
  11. $y=$_GET['y']*$scale;
  12. $w=$_GET['w']*$scale;
  13. $h=$_GET['h']*$scale;
  14. //源路径
  15. $src=$_GET['src'];
  16. //是否继续?如果不继续在这张图片截图,会将源图片删除
  17. $again="off";
  18. if(!empty($_GET['again'])){
  19. $again=$_GET['again'];
  20. }
  21. //第一步,根据传来的宽,高参数创建一幅图片,然后正好将截取的部分真好填充到这个区域
  22. header("Content-type: image/jpeg");
  23. $target = @imagecreatetruecolor($w,$h)
  24. or die("Cannot Initialize new GD image stream");
  25. //第二步,根据路径获取到源图像,用源图像创建一个image对象
  26. $source = imagecreatefromjpeg($src);
  27. //第三步,根据传来的参数,选取源图像的一部分填充到第一步创建的图像中
  28. imagecopy( $target, $source, 0, 0, $x, $y, $w, $h);
  29. //第四步,保存图像
  30. //截取并组织新路径
  31. $pos_path= strripos($src, "/");
  32. $newPath=substr($src,0,$pos_path-strlen($src))."_new/";
  33. //截取并组织新名称
  34. $pos_name=strripos($src, ".");
  35. $newName=substr($src,0,$pos_name);
  36. $pos_name_= strripos($newName, "/");
  37. //这里暂时不加后缀“.jpg”,防止有重复的文件,如果有,需要重命名,加了后会不方便
  38. $newName=substr($newName,$pos_name_-strlen($newName)+1)."_";
  39. //生成不带后缀的图片
  40. $file=$newPath.$newName;
  41. //附加asc码重命名文件,也可以用随机数,时间等命名,项目需求我不用那些命名方法了
  42. for($i=0;$i
  43. //如果目录存在
  44. if(is_dir($newPath)){
  45. //如果文件存在,继续循环,直到没有重名的文件
  46. if(is_file($file.chr(97+$i).".jpg")){
  47. continue;
  48. }else{
  49. //创建文件
  50. imagejpeg($target,$file.chr(97+$i).".jpg",100);
  51. //文件创建完成确定是否删除源文件,off为删除源文件
  52. if($again=="off"){
  53. unlink($src);
  54. unset($_SESSION['url']);
  55. }
  56. break;
  57. }
  58. }else{
  59. //创建目录
  60. mkdir($newPath);
  61. //创建文件
  62. imagejpeg($target,$file.chr(97+$i).".jpg",100);
  63. //文件创建完成确定是否删除源文件,off为删除源文件
  64. if($again=="off"){
  65. unlink($src);
  66. unset($_SESSION['url']);
  67. }
  68. break;
  69. }
  70. }
  71. //跳转到首页
  72. Header("Location: index.php");
  73. ?>
复制代码