0

フォームを使用して画像をアップロードしています。画像をアップロードすると、アップロードされた画像が表示されます。次に、JCrop( http://deepliquid.com/content/Jcrop.html ) を使用して、この画像のトリミングを許可しました。画像だけに関心があるとしましょうJPEG。これで、フォームを送信する準備が整いました。

フォームの送信時に、いくつかの画像操作を実行して画像をトリミングします。$_FILESただし、このトリミングされた画像の情報を配列に戻したい(これは必須です)。$_FILESPHPスクリプトでこの配列を操作するにはどうすればよいですか?

ここに私が試みたものがありますが、うまくいきません。

$upload_dir = '/Users/user/Sites/tmp/';

$file_name = $_FILES['image']['name'];
$file_name = "cropped_".$file_name;
$tmp_name = $_FILES['image']['tmp_name'];
$file_size = $_FILES['image']['size'];

$src_file = imagecreatefromjpeg($tmp_name);

list($width,$height) = getimagesize($tmp_name);

// Creates cropped image
$tmp = imagecreatetruecolor($_POST['w'], $_POST['h']);
imagecopyresampled($tmp, $src_file, 0, 0, $_POST['x'], $_POST['y'], $_POST['w'], $_POST['h'], $_POST['w'], $_POST['h']);
$small_pic_file_path = $upload_dir.$file_name;

imagejpeg($tmp,$small_pic_file_path,85);
$message = "<img src='http://localhost/~user/tmp/".$file_name."'>";

$_FILES['image']['name'] = $file_name;
$_FILES['image']['type'] = "image/jpeg";
// unlink($tmp_name);
// if(!move_uploaded_file($upload_dir.$file_name, $tmp_name)) echo "Failure Moving Image";
$_FILES['image']['tmp_name'] = $upload_dir.$file_name;
$_FILES['image']['error'] = 0;
$sizes = getimagesize($upload_dir.$file_name);
$_FILES['image']['size'] = ($sizes['0'] * $sizes['1']);

この$_FILES配列を変更してもよいですか?

4

2 に答える 2

2

グローバル配列を変更するだけでは機能しません。あなたはちょうど$_FILES['image']['tmp_name']新しく作成されたものになると言っています. しかし、tmp の場所には同じ古いファイルがあります。

/tmpただし、フォルダー内の画像を更新する必要があります。

tmpそこにパスとcopy画像を取得します。

種類copy($newImage, /tmp)- から tmp フォルダーのパスを取得しますphp.ini

于 2013-01-11T03:27:23.963 に答える
0

スーパーグローバルを変更するのは良い考えではありません。それを別の変数にコピーしてから、必要なことを行ってください。

于 2013-01-11T03:21:00.837 に答える