Jump to content

Image resize script


xcandiottix

Recommended Posts

I found a pretty neat script online that generates a form to upload multiple photos. It works fine and saves the image to the correct directory. What I'd like it to do, in addition, is to also generate a thumbnail that is cropped and save it into a different directory. I've reviewed some of the "how to's" and I get it but I'm not sure where to work it in to this existing code. Can anyone help point out where I could take the image file, resize it, and save it into a separate directory?

Thanks!

<?php 
$directory = $_GET['u'];
// filename: upload.processor.php 

// first let's set some variables 

// make a note of the current working directory, relative to root. 
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); 

// make a note of the directory that will recieve the uploaded files 
$uploadsDirectory = "/home/content/99/6259799/html/userdirectories/".$directory."/images/"; 

// make a note of the location of the upload form in case we need it 
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.php'; 

// make a note of the location of the success page 
$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'success.php?u=' . $directory; 

// name of the fieldname used for the file in the HTML form 
$fieldname = 'file'; 

//echo'<pre>';print_r($_FILES);exit; 



// Now let's deal with the uploaded files 

// possible PHP upload errors 
$errors = array(1 => 'php.ini max file size exceeded', 
                2 => 'html form max file size exceeded', 
                3 => 'file upload was only partial', 
                4 => 'no file was attached'); 

// check the upload form was actually submitted else print form 
isset($_POST['submit']) 
    or error('the upload form is neaded', $uploadForm); 
     
// check if any files were uploaded and if 
// so store the active $_FILES array keys 
$active_keys = array(); 
foreach($_FILES[$fieldname]['name'] as $key => $filename) 
{ 
    if(!empty($filename)) 
    { 
        $active_keys[] = $key; 
    } 
} 

// check at least one file was uploaded 
count($active_keys) 
    or error('No files were uploaded', $uploadForm); 
         
// check for standard uploading errors 
foreach($active_keys as $key) 
{ 
    ($_FILES[$fieldname]['error'][$key] == 0) 
        or error($_FILES[$fieldname]['tmp_name'][$key].': '.$errors[$_FILES[$fieldname]['error'][$key]], $uploadForm); 
} 
     
// check that the file we are working on really was an HTTP upload 
foreach($active_keys as $key) 
{ 
    @is_uploaded_file($_FILES[$fieldname]['tmp_name'][$key]) 
        or error($_FILES[$fieldname]['tmp_name'][$key].' not an HTTP upload', $uploadForm); 
} 
     
// validation... since this is an image upload script we 
// should run a check to make sure the upload is an image 
foreach($active_keys as $key) 
{ 
    @getimagesize($_FILES[$fieldname]['tmp_name'][$key]) 
        or error($_FILES[$fieldname]['tmp_name'][$key].' not an image', $uploadForm); 
} 
     
// make a unique filename for the uploaded file and check it is 
// not taken... if it is keep trying until we find a vacant one 
foreach($active_keys as $key) 
{ 
    $now = time(); 
    while(file_exists($uploadFilename[$key] = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'][$key])) 
    { 
        $now++; 
    } 
} 

// now let's move the file to its final and allocate it with the new filename 

//////////////////////////////////////It seems like I should start here//////////////////////////////////////////

foreach($active_keys as $key){ 

@move_uploaded_file($_FILES[$fieldname]['tmp_name'][$key], $uploadFilename[$key]) 
    	or error('receiving directory insuffiecient permission', $uploadForm); 
} 
     
// If you got this far, everything has worked and the file has been successfully saved. 
// We are now going to redirect the client to the success page. 
header('Location: ' . $uploadSuccess); 
// make an error handler which will be used if the upload fails 
function error($error, $location, $seconds = 5) 
{ 
    header("Refresh: $seconds; URL=\"$location\""); 
    echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n". 
    '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n". 
    '<html lang="en">'."\n". 
    '    <head>'."\n". 
    '        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n". 
    '        <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n". 
    '    <title>Upload error</title>'."\n\n". 
    '    </head>'."\n\n". 
    '    <body>'."\n\n". 
    '    <div id="Upload">'."\n\n". 
    '        <h1>Upload failure</h1>'."\n\n". 
    '        <p>An error has occured: '."\n\n". 
    '        <span class="red">' . $error . '...</span>'."\n\n". 
    '         The upload form is reloading</p>'."\n\n". 
    '     </div>'."\n\n". 
    '</html>'; 
    exit; 
} // end error handler 

?>

 

Link to comment
Share on other sites

If had any whatsoever code and were doing it with gd, I would be able to help. But what you are planning takes quite a bit of code to be done correctly.

 

When comes to cropping, it's different for so many images as to width and height, so gotta ask...how could anything know from some random image where to crop it from and whats the way the user wants. Maybe you don't actually mean crop, but a width or height set at a certain maximum dimension?

 

My best suggestion is to try phpthumb, it can generate the desired thumbs/resized images for you and save them into a cache folder.

 

http://phpthumb.sourceforge.net/

Link to comment
Share on other sites

Well, my problem isn't really the "how to" of cropping. Really what I'm trying to find out is where in this script can I grab the image ... do something to it ..  and then put it back into this script. So for example:

<?php 
$directory = $_GET['u'];
// filename: upload.processor.php 

// first let's set some variables 

// make a note of the current working directory, relative to root. 
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); 

// make a note of the directory that will recieve the uploaded files 
$uploadsDirectory = "/home/content/99/6259799/html/userdirectories/".$directory."/images/"; 

// make a note of the location of the upload form in case we need it 
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.php'; 

// make a note of the location of the success page 
$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'success.php?u=' . $directory; 

// name of the fieldname used for the file in the HTML form 
$fieldname = 'file'; 

//echo'<pre>';print_r($_FILES);exit; 



// Now let's deal with the uploaded files 

// possible PHP upload errors 
$errors = array(1 => 'php.ini max file size exceeded', 
                2 => 'html form max file size exceeded', 
                3 => 'file upload was only partial', 
                4 => 'no file was attached'); 

// check the upload form was actually submitted else print form 
isset($_POST['submit']) 
    or error('the upload form is neaded', $uploadForm); 
     
// check if any files were uploaded and if 
// so store the active $_FILES array keys 
$active_keys = array(); 
foreach($_FILES[$fieldname]['name'] as $key => $filename) 
{ 
    if(!empty($filename)) 
    { 
        $active_keys[] = $key; 
    } 
} 

// check at least one file was uploaded 
count($active_keys) 
    or error('No files were uploaded', $uploadForm); 
         
// check for standard uploading errors 
foreach($active_keys as $key) 
{ 
    ($_FILES[$fieldname]['error'][$key] == 0) 
        or error($_FILES[$fieldname]['tmp_name'][$key].': '.$errors[$_FILES[$fieldname]['error'][$key]], $uploadForm); 
} 
     
// check that the file we are working on really was an HTTP upload 
foreach($active_keys as $key) 
{ 
    @is_uploaded_file($_FILES[$fieldname]['tmp_name'][$key]) 
        or error($_FILES[$fieldname]['tmp_name'][$key].' not an HTTP upload', $uploadForm); 
} 
     
// validation... since this is an image upload script we 
// should run a check to make sure the upload is an image 
foreach($active_keys as $key) 
{ 
    @getimagesize($_FILES[$fieldname]['tmp_name'][$key]) 
        or error($_FILES[$fieldname]['tmp_name'][$key].' not an image', $uploadForm); 
} 
     
// make a unique filename for the uploaded file and check it is 
// not taken... if it is keep trying until we find a vacant one 
foreach($active_keys as $key) 
{ 
    $now = time(); 
    while(file_exists($uploadFilename[$key] = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'][$key])) 
    { 
        $now++; 
    } 
} 

// now let's move the file to its final and allocate it with the new filename 

foreach($active_keys as $key){ 
//////////////////////////////////////It seems like I should start here//////////////////////////////////////////
@move_uploaded_file($_FILES[$fieldname]['tmp_name'][$key], $uploadFilename[$key]) 
    	or error('receiving directory insuffiecient permission', $uploadForm); 
} 
     
// If you got this far, everything has worked and the file has been successfully saved. 
// We are now going to redirect the client to the success page. 
header('Location: ' . $uploadSuccess); 
// make an error handler which will be used if the upload fails 
function error($error, $location, $seconds = 5) 
{ 
    header("Refresh: $seconds; URL=\"$location\""); 
    echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n". 
    '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n". 
    '<html lang="en">'."\n". 
    '    <head>'."\n". 
    '        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n". 
    '        <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n". 
    '    <title>Upload error</title>'."\n\n". 
    '    </head>'."\n\n". 
    '    <body>'."\n\n". 
    '    <div id="Upload">'."\n\n". 
    '        <h1>Upload failure</h1>'."\n\n". 
    '        <p>An error has occured: '."\n\n". 
    '        <span class="red">' . $error . '...</span>'."\n\n". 
    '         The upload form is reloading</p>'."\n\n". 
    '     </div>'."\n\n". 
    '</html>'; 
    exit; 
} // end error handler 

?>

 

Where I noted 'i should start here' .... How do I take the image thats ran in this script so far .. and put it into a variable ... do something to it ... and then put it back. So maybe.....

foreach($active_keys as $key){ 
        $image = $_FILES[$fieldname]['tmp_name'][$key];
        --I insert whatever cropping, resizing etc--
        $_FILES[$fieldname]['tmp_name'][$key] = $image
@move_uploaded_file($_FILES[$fieldname]['tmp_name'][$key], $uploadFilename[$key]) 
    	or error('receiving directory insuffiecient permission', $uploadForm); 
} 

 

Would that work in theory?

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.