PHP Téléchargement d'une Grande image et le redimensionnement avec la proportion comme Photoshop

Un rapide brief. Nous avons actuellement de faire de petites, moyennes et grandes images basée sur les images de produits, nous avons sur notre site. N'étant pas un crack de sur PHP j'ai pensé que je pourrais toujours essayer d'automatiser ce cauchemar.

L'image que nous avons de la télécharger et de la dimension de la base est en dessous de

800 width x 1400 width LARGE
300 width x 525 width  THUMB

Le problème avec mon script PHP est qu'il vient de se redimensionne avec mise à l'échelle de proportion. Je veux être en mesure à l'échelle vers le bas comme dans Photoshop, vous cliquez simplement sur la touche maj et l'image échelles. Je suis en train d'utiliser imagecopyresized mais avec un peu de chance.

<?php
//PHP UPLOAD SCRIPT

//VALIDATION OF FORM

if($_FILES['user_image']['type'] == "image/jpeg" && $_FILES['user_image']['size'] < 3000000)
{
    //VARS
    $target_folder = 'images/'; 
    $upload_image = $target_folder.basename($_FILES['user_image']['name']); 

    //UPLOAD FUNCTION
    if(move_uploaded_file($_FILES['user_image']['tmp_name'], $upload_image)) 
    {

        //VARS FOR FILE NAMES
        $thumbnail = $target_folder."medium_x.jpg";
        $actual = $target_folder."large_x.jpg";

      //THUMBNAIL SIZE
        list($width, $height) = getimagesize($upload_image);
        $newwidth = "300"; 
        $newheight = "525";

        //VARS FOR CALL BACK
        $thumb = imagecreatetruecolor($newwidth, $newheight);
        $source = imagecreatefromjpeg($upload_image);

        //RESIZE WITH PROPORTION LIKE PHOTOSHOP HOLDING SHIFT
        imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

        //MAKE NEW FILES
        imagejpeg($thumb, $thumbnail, 100);

        //FILE RENAMES
        rename($upload_image, $actual);

        {

            //SUCCESS MESSAGES
            ?>

            <p>
                Image Successfully uploaded!<br />
                Actual image: <?=$actual;?><br />
                Thumbnail image: <?=$thumbnail;?><br />

                <h1>Large</h1>
                <img src="<?=$actual;?>"/><br /><br />
                <h1>Medium</h1>
                <img src="<?=$thumbnail;?>"/><br /><br />
            </p>

            <?
        }
        //FAILED MESSAGES
    }
    else
    {
        echo 'Upload failed.';
    }
}
else
{
        //NOT A JPEG
        echo 'Not a JPEG';
}

//END OF SCRIPT
?>

Comment puis-je redimensionner correctement sans avoir une image redimensionnée? Est-il possible?

OriginalL'auteur TheBlackBenzKid | 2013-02-19