ホームページ  >  記事  >  バックエンド開発  >  jquery(Jcrop)+PHP 座標に応じて画像を切り出す

jquery(Jcrop)+PHP 座標に応じて画像を切り出す

WBOY
WBOYオリジナル
2016-07-25 09:08:311372ブラウズ
/*** グーフィー 2011-11-29 * 画像処理: 渡された座標パラメータに従って、x、y、w、h が順に選択された x 座標、y 座標、w 幅、h 高さになります。 * この領域を、最初のステップで作成した空のイメージに imagecopy() メソッドを使用してコピーします。 * 画像を作成するときは、true color を使用するには imagecreatetruecolor() を使用する必要があることに注意してください。そうしないと、imagecreate() を使用すると画像が歪んでしまいます。*/
  1. /**
  2. * グーフィー 2011-11-29
  3. * 画像処理: 渡された座標パラメータに従って、x、y、w、h は順に選択された x 座標、y 座標、w 幅、h 高さになります
  4. * imagecopy( ) メソッド この領域を最初のステップで作成した空白の画像にコピーします
  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['もう一度'];
  20. }
  21. //最初のステップは、渡された幅と高さのパラメータに基づいて画像を作成し、インターセプトされた部分をこの領域に埋めることです
  22. header("Content-type: image/jpeg");
  23. $target = @imagecreatetruecolor($w,$h)
  24. or die("Cannot Initialize new GD image stream");
  25. //2 番目のステップは、パスに従ってソース画像を取得し、次を使用して画像オブジェクトを作成することです。ソース画像
  26. $ source = imagecreatefromjpeg($src);
  27. //第 3 ステップでは、渡されたパラメーターに従って、ソース画像の一部を選択して、最初のステップで作成した画像を埋めます
  28. imagecopy( $target, $source, 0, 0, $ x, $y, $w, $h);
  29. // 4 番目のステップ、画像を保存します
  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<26;$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. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。