Jump to content

Avoiding poor quality on thumbnail image?


greens85

Recommended Posts

Hi All,

 

When I am uploading an image and resizing it I am getting poor quality... I am using imagecopyresampled() which i believe is the best way to do it... also if I upload a landscape image all is fine but if I try to load a portrait image it come out all wrong. I have included the current code & screenshots...

 

Is anyone able to advise, many thanks.

 

$tdir = "images/thumbs/"; // Path To Thumbnails Directory
$twidth = "200";   // Maximum Width For Thumbnail Images
$theight = "300";   // Maximum Height For Thumbnail Images

//Uploading/Resizing Script
  	$url = $_FILES['imagefile']['name'];   // Set $url To Equal The Filename For Later Use
  
  if ($_FILES['imagefile']['type'] == "image/jpg" || $_FILES['imagefile']['type'] == "image/jpeg" || $_FILES['imagefile']['type'] == "image/pjpeg") {

    $file_ext = strrchr($_FILES['imagefile']['name'], '.');   // Get The File Extention In The Format Of , For Instance, .jpg, .gif or .php

$image_name=time().$file_ext;
$newname="images/".$image_name;

    $copy = copy($_FILES['imagefile']['tmp_name'], $newname);   // Move Image From TempLocation To Permanent Location
    if ($copy) {   // If The Script Was Able To Copy The Image To It's Permanent Location
$query = "UPDATE edworld_candidates SET image='$image_name' WHERE id='$id'";
	$result = mysql_query($query) or die (mysql_error());
    print 'Image uploaded successfully.<br />';   // Was Able To Successfully Upload Image

$simg = imagecreatefromjpeg($newname);   // Make A New Temporary Image To Create The Thumbanil From
    $currwidth = imagesx($simg);   // Current Image Width
    $currheight = imagesy($simg);   // Current Image Height
    	if ($currheight > $currwidth) {   // If Height Is Greater Than Width
        $zoom = $twidth / $currheight;   // Length Ratio For Width
        $newheight = $theight;   // Height Is Equal To Max Height
        $newwidth = $currwidth * $zoom;   // Creates The New Width
    } else {    // Otherwise, Assume Width Is Greater Than Height (Will Produce Same Result If Width Is Equal To Height)
    $zoom = $twidth / $currwidth;   // Length Ratio For Height
    $newwidth = $twidth;   // Width Is Equal To Max Width
    $newheight = $currheight * $zoom;   // Creates The New Height
    }
    $dimg = imagecreate($newwidth, $newheight);   // Make New Image For Thumbnail
    imagetruecolortopalette($simg, false, 256);   // Create New Color Pallete
    $palsize = ImageColorsTotal($simg);
    for ($i = 0; $i < $palsize; $i++) {   // Counting Colors In The Image
    $colors = ImageColorsForIndex($simg, $i);   // Number Of Colors Used
    ImageColorAllocate($dimg, $colors['red'], $colors['green'], $colors['blue']);   // Tell The Server What Colors This Image Will Use
    }
    imagecopyresampled($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight);   // Copy Resized Image To The New Image (So We Can Save It)
    imagejpeg($dimg, "$tdir" . $image_name);   // Saving The Image
    imagedestroy($simg);   // Destroying The Temporary Image
    imagedestroy($dimg);   // Destroying The Other Temporary Image
    print 'Image thumbnail created successfully.';   // Resize successful
    	} else {
    print '<font color="#FF0000">ERROR: Unable to upload image.</font>';   // Error Message If Upload Failed
    }
  		} else {
    print '<font color="#FF0000">ERROR: Wrong filetype (has to be a .jpg or .jpeg. Yours is ';   // Error Message If Filetype Is Wrong
    print $file_ext;   // Show The Invalid File's Extention
    print '.</font>';
  	}  
?>

 

 

 

[attachment deleted by admin]

Hey, thanks for the replies...

 

@askbapi

 

I will take a look thanks!

 

@jskywalker

 

I realise that the issue is landscape/portrait... but presumably there is a way to tackle this so that users can select if they want to upload landscape or portrait images? I just don't have any where near the PHP knowledge to work out how to make it so.

 

Thanks

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.