|
Posted by xx75vulcan on 09/05/07 16:00
Ok I feel like a dope!
I didn't realize that editing a picture, even simply rotating it could
increase it's file size.
Upped the upload_max_filesize in php.ini and the hidden form field
max_file_size value and it works great.
Thanks a million for that neat debugging trick!
Chris
On Sep 5, 10:50 am, xx75vulcan <xx75vul...@gmail.com> wrote:
> Thanks Erwin, I feel I'm a little closer.
>
> Deployed your trick, and below is what I get for edited files:
>
> Array
> (
> [imagefile] => Array
> (
> [name] => DSC00064.JPG
> [type] =>
> [tmp_name] =>
> [error] => 2
> [size] => 0
> )
>
> )
>
> This is what I get for un-edited files:
>
> Array
> (
> [imagefile] => Array
> (
> [name] => 2_site_top.jpg
> [type] => image/jpeg
> [tmp_name] => C:\WINDOWS\TEMP\php59.tmp
> [error] => 0
> [size] => 32448
> )
>
> )
>
> On Sep 5, 10:14 am, Erwin Moller
>
> <Since_humans_read_this_I_am_spammed_too_m...@spamyourself.com> wrote:
> > xx75vulcan wrote:
> > > Hi,
>
> > > I've got a PHP Upload Form that works great, unless that is, the image
> > > your uploading has been modified through a photo editing software.
>
> > > Example: if I upload the image straight from a camera or other, it
> > > uploads fine. However, If I want to rotate the image, or resize it
> > > with photoshop or simmilar, making sure to save it again as a jpg, the
> > > PHP upload won't upload the image.
>
> > > It's like editing the image somehow changes it's mime type or
> > > something?!
>
> > Hi Vulcan,
>
> > Maybe.
>
> > > Any ideas?
>
> > I ALWAYS start debugging such issues with:
>
> > echo "<pre>";
> > print_r($_FILES);
> > echo "</pre>";
> > exit;
>
> > Then compare the output of your uneditted and editted version.
> > Do you see any differences?
>
> > That will probably give you a hint.
>
> > And do NOT rely too much on mimetype.
> > from php.net:
>
> > $_FILES['userfile']['type']
> > The mime type of the file, if the browser provided this
> > information. An example would be "image/gif". This mime type is however
> > not checked on the PHP side and therefore don't take its value for granted.
>
> > Hope that helps.
>
> > Regards,
> > Erwin Moller
>
> > > Here's my upload script:
>
> > > <?php
> > > if($_POST["upload"]) //Check to see if submit was clicked
> > > {
> > > // Get the details of "imagefile"
> > > $filename = $_FILES['imagefile']['name'];
> > > $temporary_name = $_FILES['imagefile']['tmp_name'];
> > > $mimetype = $_FILES['imagefile']['type'];
> > > $filesize = $_FILES['imagefile']['size'];
>
> > > //Open the image using the imagecreatefrom..() command based on the
> > > MIME type.
> > > switch($mimetype) {
> > > case "image/jpg":
> > > case "image/jpeg":
> > > case "image/pjpeg":
> > > $i = imagecreatefromjpeg($temporary_name);
> > > break;
> > > case "image/gif":
> > > $i = imagecreatefromgif($temporary_name);
> > > break;
> > > case "image/png":
> > > $i = imagecreatefrompng($temporary_name);
> > > break;
> > > }
>
> > > //Delete the uploaded file
> > > unlink($temporary_name);
>
> > > //Specify the size of the thumbnail
> > > $dest_x = 350;
> > > $dest_y = 350;
>
> > > //Is the original bigger than the thumbnail dimensions?
> > > if (imagesx($i) > $dest_x or imagesy($i) > $dest_y) {
> > > //Is the width of the original bigger than the height?
> > > if (imagesx($i) >= imagesy($i)) {
> > > $thumb_x = $dest_x;
> > > $thumb_y = imagesy($i)*($dest_x/imagesx($i));
> > > } else {
> > > $thumb_x = imagesx($i)*($dest_y/imagesy($i));
> > > $thumb_y = $dest_y;
> > > }
> > > } else {
> > > //Using the original dimensions
> > > $thumb_x = imagesx($i);
> > > $thumb_y = imagesy($i);
> > > }
>
> > > //Generate a new image at the size of the thumbnail
> > > $thumb = imagecreatetruecolor($thumb_x,$thumb_y);
>
> > > //Copy the original image data to it using resampling
> > > imagecopyresampled($thumb, $i ,0, 0, 0, 0, $thumb_x, $thumb_y,
> > > imagesx($i), imagesy($i));
>
> > > //Save the thumbnail
> > > imagejpeg($thumb, "../images/$filename", 80);
>
> > > //Display FileName
> > > Print "Value for Image field: $filename";
> > > $added =true;
> > > }
> > > ?>
>
> > > <html>
> > > <form action="upload.php" method="POST" enctype="multipart/
> > > form-data">
> > > <input type="hidden" name="MAX_FILE_SIZE" value="200000">
> > > <input type="file" name="imagefile">
> > > <input type="submit" name="upload" value="Upload Image">
> > > </form>
> > > </html>
Navigation:
[Reply to this message]
|