8

画像をトリミングして、トリミングをクリックできます。しかし、この画像を保存する方法が正確にわからないため、何かがうまくいきません。

私はphpからimagecreatefromjpegを使用しています。このコードは次のようになります。

<?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, 'uploads/cropped/' . 'filename');

exit;
}

?>

元の画像を保存するための私のphpコードは次のようになります。

     <?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.";
         }
    ?> 

トリミングした画像を保存するにはどうすればよいですか? 元の画像を上書きしてトリミングした画像のみを取得する方法はありますか?

前もって感謝します。

編集: 1 枚の写真を保存できるようになりました。コードを次のように編集しました: imagejpeg($dst_r, 'uploads/cropped/' . $filename .'boek.jpg'); しかし、複数のファイルを別の名前で保存できる関数を作成する必要があります。「uploads/」に保存されている元の画像を上書きする可能性があります

4

1 に答える 1

7

私は今の質問と思われるものに答えるつもりです:

しかし、複数のファイルを別の名前で保存できる関数を作成する必要があります。「uploads/」に保存されている元の画像を上書きする可能性があります

これを行う簡単な方法は、ファイル名にタイムスタンプを追加することです。この方法では、操作が実行されるたびに、新しいファイル名が取得されます。次の行に沿って何かをする:

imagejpeg($dst_r, 'uploads/cropped/' . $filename . time() . 'boek.jpg');

毎回新しい画像を保存します。

元を上書きしたいときは、正しいパスを割り当てるだけです

imagejpeg($dst_r, 'uploads/' . $filename .'.jpg');

編集:問題と思われるのは、「boek.jpg」をハードコーディングせずに正しいファイル名を取得することです。

投稿された元のコードはfilename、画像を保存するときに文字列を使用していました

imagejpeg($dst_r, 'uploads/cropped/' . 'filename');

あなたがしたいことは、からファイル名を推測することです$src。これを行うには、単純に関数basename(ドキュメントはこちら) を使用するだけで、次のようになります。

imagejpeg($dst_r, 'uploads/cropped/' . basename($src)); // basename will already contain the extension
于 2012-11-28T14:31:42.823 に答える