我正在使用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;
}
?>
我现在的问题是,我如何使用那个$ target我曾经在上面的PHP代码中显示我刚刚上传的图像?
我不知道。
答案 0 :(得分:3)
上传目标时,您可以将文件路径放入$ _SESSION。在您的uploaded.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;
}
?>
答案 1 :(得分:0)
您需要使用指定的新图片网址重新加载页面,或者将该网址返回给JavaScript,以便您的JS代码可以替换图片而无需重新加载。
答案 2 :(得分:0)
imagejpeg采用已设置为NULL的文件名参数。
您可以使用它将裁剪后的图像存储到服务器上的磁盘,然后在重定向到“showimage.php”或您拥有的任何结果页面时再次加载它。您可以使用Location标头重定向。
您可以使用某种数据库跟踪重新加载/重定向的图像路径,或者如果这是一个快速项目,只需将图像路径存储在cookie /会话变量中。