2

Jcropプラグインを使用して画像をトリミングしています。

標準のhtmlフォームで写真をアップロードします。最後にアップロードした画像を次のコードで表示します。

 <img id="cropbox" src="<?php echo $target ?>" width="400" />

これは次のようになります。ここに画像の説明を入力してください

$targetのコードは次のようになります。

 <?php 
     $target = "uploads/"; 
     $target = $target . basename( $_FILES['filename']['name']) ; 
     $ok=1; 
     if(move_uploaded_file($_FILES['filename']['tmp_name'], $target)) 
     {
     echo "De afbeelding *". basename( $_FILES['filename']['name']). "* is geupload naar de map 'uploads'";
     } 
     else {
     echo "Sorry, er is een probleem met het uploaden van de afbeelding.";
     }
 ?> 

これで、トリミングする領域の選択を開始できます。ここに画像の説明を入力してください

次に、次のコードを使用して、選択したトリミング領域を新しいjpg画像に保存します。

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $targ_w = 200;
    $targ_h = 400;
    $jpeg_quality = 90;

    $src = '';
    $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,NULL,$jpeg_quality);

    exit;
}

?>

私の質問は、上記のphpコードでアップロードしたばかりの画像を表示するために使用した$ targetSourceをどのように使用するかです。

何も思いつきません。

4

3 に答える 3

3

ターゲットをアップロードするときに、ファイルへのパスを$_SESSIONに入れることができます。upload.phpで、次のコードを使用します(ここでは、session_start()でセッションを開始し、形成されたターゲットパスを$ _SESSION配列に配置します)。

 <?php 
 session_start();
 $target = "uploads/"; 
 $target = $target . basename( $_FILES['filename']['name']) ; 
 $_SESSION['target_path'] = $target;

 $ok=1; 
 if(move_uploaded_file($_FILES['filename']['tmp_name'], $target)) 
 {
 echo "De afbeelding *". basename( $_FILES['filename']['name']). "* is geupload naar de map 'uploads'";
 } 
 else {
 echo "Sorry, er is een probleem met het uploaden van de afbeelding.";
 }
?> 

あなたのcrop.phpで:

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

$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,NULL,$jpeg_quality);

exit;
}

?>
于 2012-11-24T14:36:39.623 に答える
0

新しい画像のURLを指定してページを再読み込みするか、そのURLをJavaScriptに戻して、JSコードが再読み込みせずに画像を置き換えることができるようにする必要があります。

于 2012-11-24T14:29:12.597 に答える
0

imagejpegは、NULLに設定したファイル名パラメーターを取ります。

これを使用して、トリミングされた画像をサーバー上のディスクに保存し、「showimage.php」またはその他の結果ページにリダイレクトするときに再度読み込むことができます。Locationヘッダーを使用してリダイレクトできます。

ある種のデータベースを使用して、リロード/リダイレクト全体の画像パスを追跡できます。これが簡単なプロジェクトの場合は、画像パスをCookie/セッション変数に保存するだけです。

于 2012-11-24T14:38:21.387 に答える