Avatar billede hmortensen Nybegynder
15. oktober 2004 - 11:19 Der er 1 løsning

Image cropping

Hej

Jeg 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>';

?>
Avatar billede hmortensen Nybegynder
18. oktober 2004 - 11:08 #1
Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester