2012-12-11 6 views
13

可変幅&の画像を切り抜かなければならないアプリケーションがあります。しかし、私は持っている私のコードでは、PHPのGD(Createimagefromjpeg)機能JcropでトリミングしてPHP GDで保存するときに可変幅と高さを取得する方法

でこれを行う方法がわからない:

$targ_w = 400; 
$targ_h = 400; 

これはトリミングされた画像は、常にこの幅と高さを取得することを意味します。それは私が望むものではありません。私が欲しい、何らかの方法で、画像をトリミングし、私はこの絵のようにトリミング領域でそれを選択したようにそれをトリミング:写真で私はこれを取得するように私は、その画像をトリミング今

cropped image

square image created

私は幅と高さを与えなければならないので、それは正方形の画像です。すべての画像iの作物ではサイズが異なります。

これを行う方法(変数、IDなど..)はありますか?

ありがとう:D

EDIT:トリミングされた画像を作成するために、私のコード:

<!DOCTYPE> 
<html> 
<head> 
    <title>Cropped Image</title> 
</head> 
<body> 

<?php 
SESSION_start(); 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
$targ_w = 400; 
$targ_h = 400; 
$jpeg_quality = 100; 

$src = $_SESSION['target_path']; 
$img_r = imagecreatefromjpeg($src); 
$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'], 
$targ_w,$targ_h,$_POST['w'],$_POST['h']); 

header('Content-type: image/jpeg'); 
imagejpeg($dst_r, 'data/uploads/' . basename($src)); 
header('Location:'.$src); 
exit; 
} 

?> 

</body> 
</html> 

私のコード画像をアップロードする:

<!DOCTYPE> 
<html> 

<head> 
    <title>Het Vergeet-mij-nietje</title> 
    <link href="style/default.css" REL="stylesheet" TYPE="text/css"> 
    <script type="text/javascript" src="js/showfunctie.js"></script> 
    <script src="js/jquery.min.js"></script> 
    <script src="js/jquery.Jcrop.min.js"></script> 
    <link rel="stylesheet" href="css/jquery.Jcrop.css" type="text/css" /> 
</head> 

<body> 
<center> 
    <div id="title"> 
    <h1><a href="index.php" id="link1">Het "Vergeet-mij-nietje"</a></h1> 
    <h3>Upload Systeem</h3> 
    </div> 

<div id="content1"> 
    <p><b>Upload hier een afbeelding en druk op upload om hem vervolgens te kunnen bijsnijden.</b></p> 
    <form action="uploaded.php" method="post" enctype="multipart/form-data"> 
     <input type="file" name="filename" /> 
     <input type="submit" value="Upload" /> 
    </form> 
<br /> <br /> 

<p align="left"><b>Bekijk hier de gecropte en geuploadde foto's</b></p> 


    <p class="album"> 
     <?php include 'album.php';?> 
    </p> 

</div> 

<div id="copyright"> 
Copyright &copy; Kees Sonnema & Jan Beetsma 
</div> 

</body> 
</html> 

画像をトリミングするために私のコードJCrop:

<html> 
    <head> 
    <script src="js/jquery-1.7.2.min.js"></script> 
    <script src="js/lightbox.js"></script> 
    <link href="style/css/lightbox.css" rel="stylesheet" /> 
    </head> 
<body> 

<?php 

$page = $_SERVER['PHP_SELF']; 

//settings 
$column = 6; 

// directories 
$base = "data"; 
$uploads = "thumbs"; 

// get album 
$get_album = $_GET['album']; 

if (!$get_album) 
{ 
    echo "<b>Selecteer een album:</b><p />"; 
    $handle = opendir($base); 
    while (($file = readdir($handle))!==FALSE) 
    { 
     if (is_dir($base."/".$file) && $file != "." && $file !=".." && $file !="$uploads") 
     { 
      echo "<a href='$page?album=$file'>$file</a><br />"; 
     } 
    } 
    closedir($handle); 
} 

else 
{ 
    if (!is_dir($base."/".$get_album) || strstr($get_album,".")!=NULL || strstr($get_album,"/")!=NULL || strstr($get_album,"\\")!=NULL) 
    { 
     echo "Dit album bestaat niet."; 
    } 
    else 
    { 
     $x = 0; 
     echo "<b>$get_album</b><p />"; 
     $handle = opendir($base."/".$get_album); 
     while (($file = readdir($handle)) !== FALSE) 
     { 
      if ($file != "." && $file != "..") 
      { 
       echo "<table style='display:inline;'><tr><td><a href='$base/$get_album/$file' rel='lightbox'><img src='$base/$get_album/$file' height='150' width='100'></a></td></tr></table>"; 
       $x++; 
      } 
       if ($x==$column) 
       { 
        echo "<br />"; 
        $x = 0; 
       } 
      } 
    } 
    closedir($handle); 

    echo "<p /><a href='$page'>Terug Naar Albums</a>"; 

} 

?> 

</body> 
</html> 

答えて

9

変更

$dst_r = imagecreatetruecolor($_POST['w'], $_POST['h']); 

$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 

からのラインは=>これは、選択した領域で新しいイメージを作成します、あなたは$ targ_wと$ targ_h変数を削除することができます。

そして

imagecopy(
    $dst_r, $img_r, 
    0, 0, $_POST['x'], $_POST['y'], 
    $_POST['w'], $_POST['h'] 
); 
+0

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'], $targ_w,$targ_h,$_POST['w'],$_POST['h']); 

から行を変更し、私はそれを試すことができます。私はあなたのために上記の私のコードを投稿します:) –

+0

私はこのコードを動作させることができません。彼は切り抜かれた画像を保存/表示しません。それは単に空白のページを与えます。 –

+0

トリミングされた画像が作成されていますか?最後の2行をコメントアウトし、スクリプトの先頭にerror_reporting(-1)を追加して、最終的なエラーを表示します。 –

関連する問題