我可以裁剪图像并点击裁剪。但后来出了问题,因为我不确切知道如何保存这张图片。
我使用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'); 但我必须创建一个可以使用彼此名称保存多个文件的函数。并且可能会覆盖保存在“uploads /”
中的原始图像答案 0 :(得分: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
(文档here),这样您就可以:
imagejpeg($dst_r, 'uploads/cropped/' . basename($src)); // basename will already contain the extension