【问题标题】:How to crop a selected image and save that cropped image to a folder using php如何裁剪选定的图像并将裁剪的图像保存到使用 php 的文件夹中
【发布时间】:2012-11-12 14:03:56
【问题描述】:

我正在使用 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 代码中上传的图像?

我不知道。

【问题讨论】:

    标签: php jquery html save jcrop


    【解决方案1】:

    上传目标时可以将文件路径放入$_SESSION。在您上传的.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;
    }
    
    ?>
    

    【讨论】:

    • 您能进一步解释一下吗?我不完全明白如何做到这一点
    • 我已经扩展了我的帖子以更详细地描述您需要做的事情
    • 成功了。谢谢! :D 现在我可以继续我的项目了! +1 并接受
    【解决方案2】:

    imagejpeg 采用您已设置为 NULL 的文件名参数。

    您可以使用它将裁剪后的图像存储到服务器上的磁盘,然后在重定向到“showimage.php”或您拥有的任何结果页面时再次加载它。您可以使用 Location 标头进行重定向。

    您可以使用某种数据库在重新加载/重定向之间跟踪图像路径,或者如果这是一个快速项目,只需将图像路径存储在 cookie / session 变量中。

    【讨论】:

      【解决方案3】:

      您需要使用指定的新图片 URL 重新加载页面,或者将该 URL 返回给 JavaScript,以便您的 JS 代码可以替换图片而无需重新加载。

      【讨论】:

      • 当我点击“裁剪图像”时,我正在重定向到一个新页面,我正在重定向到crop.php,当我点击“裁剪图像”时,我正在上传.php
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      相关资源
      最近更新 更多