Image cropping
HejJeg har et script som kan skærre et brugerbestemt stykke ud af et billede og hvis det i browseren.
Scriptet virker fint første gang, men anden gang jeg kører det, skal jeg force et refresh for at få vist det rigtige udsnit.
Jeg har prøvet at lave destinations navnet om til billedenavn-time().jpg, men så ligger den et nyt billede hver gang, og det kommer til at fylde en del.
Nogen der har en løsning, hvor den bare overskriver billedet, og viser det rigtige uden at jeg skal force et refresh ?
Koden er som følger:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$image = '1.jpg';
$dest_image = 'cropped_image.jpg';
$margin = 10;
if(!isset($_POST['step']))
$title = '1';
else
$title = $_POST['step'];
echo '
<html>
<head>
<title>Image Crop | step '.$title.'</title>
</head>
<body style="margin: '.$margin.'px;">';
if(!isset($_POST['tx']) && !isset($_POST['fx']))
{
echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
<input type="image" src="'.$image.'"><p>';
if(!isset($_POST['x']))
{
echo '
<input type="hidden" name="step" value="2">
Marker først punkt';
}else{
echo '
<input type="hidden" name="step" value="3">
<input type="hidden" name="fx" value="'.$_POST['x'].'">
<input type="hidden" name="fy" value="'.$_POST['y'].'">
Marker andet punkt | <a href="'.$_SERVER['PHP_SELF'].'">Start forfra</a>';
}
echo '
</form>
';
}
if(isset($_POST['fx']))
{
echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
<input type="hidden" name="step" value="4">
<input type="image" src="'.$image.'">
<input type="hidden" name="tx" value="'.$_POST['fx'].'">
<input type="hidden" name="ty" value="'.$_POST['fy'].'">
<input type="hidden" name="width" value="'.($_POST['x']-$_POST['fx']).'">
<input type="hidden" name="height" value="'.($_POST['y']-$_POST['fy']).'"><p>
<div style="position: absolute;
left:'.($_POST['fx']+$margin).'px;
top: '.($_POST['fy']+$margin).'px;
width: '.($_POST['x']-$_POST['fx']).'px;
height: '.($_POST['y']-$_POST['fy']).'px;
border: 1px solid #fff;">
</div>
Klik på billedet for at få vist resultattet | <a href="'.$_SERVER['PHP_SELF'].'">Start forfra</a>
</form>';
}
if(isset($_POST['tx']))
{
$img = imagecreatetruecolor($_POST['width'],$_POST['height']);
$org_img = imagecreatefromjpeg($image);
$ims = getimagesize($image);
imagecopy($img,$org_img, 0, 0, $_POST['tx'], $_POST['ty'], $ims[0], $ims[1]);
imagejpeg($img,$dest_image,90);
imagedestroy($img);
echo '
<img src="'.$dest_image.'" width="'.$_POST['width'].'" height="'.$_POST['height'].'"><p>
<a href="'.$_SERVER['PHP_SELF'].'">Prøv igen</a>';
}
echo '
</body>
</html>';
?>
