如何保存裁剪的图像

Posted

技术标签:

【中文标题】如何保存裁剪的图像【英文标题】:how to save cropped image 【发布时间】:2012-06-29 04:31:11 【问题描述】:

从以下链接下载了裁剪图像的代码:

http://deepliquid.com/content/Jcrop.html

这是crop.php页面中的代码:

<?php

/**
 * Jcrop image cropping plugin for jQuery
 * Example cropping script
 * @copyright 2008-2009 Kelly Hallman
 * More info: http://deepliquid.com/content/Jcrop_Implementation_Theory.html
 */

if ($_SERVER['REQUEST_METHOD'] == 'POST')

    $targ_w = $targ_h = 150;
    $jpeg_quality = 90;

    $src = 'demo_files/pool.jpg';
    $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;


// If not a POST request, display page below:

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
        <script src="js/jquery.min.js"></script>
        <script src="js/jquery.Jcrop.js"></script>
        <link rel="stylesheet" href="css/jquery.Jcrop.css" type="text/css" />
        <script language="javascript">

            $(function()

                $('#cropbox').Jcrop(
                    aspectRatio: 1,
                    onSelect: updateCoords
                );

            );

            function updateCoords(c)
            
                $('#x').val(c.x);
                $('#y').val(c.y);
                $('#w').val(c.w);
                $('#h').val(c.h);
            ;

            function checkCoords()
            
                if (parseInt($('#w').val())) return true;
                alert('Please select a crop region then press submit.');
                return false;
            ;

        </script>

</head>

<body>
<!-- This is the image we're attaching Jcrop to -->
        <img src="demo_files/pool.jpg" id="cropbox" />

        <!-- This is the form that our event handler fills -->
        <form action="crop.php" method="post" onsubmit="return checkCoords();">
            <input type="hidden" id="x" name="x" />
            <input type="hidden" id="y" name="y" />
            <input type="hidden" id="w" name="w" />
            <input type="hidden" id="h" name="h" />
            <input type="submit" value="Crop Image" />
        </form>
</body>
</html>

裁剪完美完成并成功显示裁剪后的图像。

但我想将裁剪后的图像保存到目录中。

我该怎么做?

【问题讨论】:

您阅读过imagejpeg 上的手册吗?将第二个参数从 null 更改为所需的文件名。 +1 @Josh,这样做ImageJpeg($dst_r, 'images/' . 'Desired_name'; 将文件保存到images 目录中。在此处阅读更多信息php.net/manual/en/function.imagejpeg.php @Joy,我将代码更改为imagejpeg($dst_r,'crop_images/',$jpeg_quality);。然后我收到此错误The image “http://localhost/crop/index.php” cannot be displayed because it contains errors. @galtech.Mariya,你还想显示图像吗,如果你这样做,你可以从图像目录链接到新保存的图像。删除header('Content-type: image/jpeg'); 它将删除错误。 +1@Joy,好吧,我弄错了,只放了目录路径,不包括图像的名称 【参考方案1】:

试试这个:

imagejpeg($dst_r, 'yourfilename.jpg', $jpeg_quality);

// Remove from memory - don't forget this part
imagedestroy($dst_r);

更多信息 http://www.php.net/manual/en/function.imagejpeg.php

【讨论】:

【参考方案2】:

这就是我的做法。

改变这个:

imagejpeg($dst_r,$src,$jpeg_quality);

imagejpeg($dst_r);// Output


imagedestroy($dst_r);// Free the memory

【讨论】:

以上是关于如何保存裁剪的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UIBezierPath 保存裁剪的图像

如何保存裁剪的图像

如何使用原始文件名保存裁剪的图像?

捕获和裁剪图像并保存裁剪的图像

如何在裁剪框生成的按键事件中保存裁剪的图像

用php和zend裁剪后如何重新保存图像?