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'); 但是我必须创建一个函数,该函数可以使用另一个名称保存多个文件。并且可能会覆盖保存在“上传/”中的原始图像

4

1 回答 1

7

我要回答现在似乎是什么问题:

但是我必须创建一个函数,该函数可以使用另一个名称保存多个文件。并且可能会覆盖保存在“上传/”中的原始图像

一个简单的方法是在文件名中添加时间戳,这样每次执行操作时,你都会得到一个新的文件名。做一些类似的事情:

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 回答