greens85 Posted March 4, 2010 Share Posted March 4, 2010 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] Link to comment https://forums.phpfreaks.com/topic/194123-avoiding-poor-quality-on-thumbnail-image/ Share on other sites More sharing options...
askbapi Posted March 4, 2010 Share Posted March 4, 2010 take a look at this class : http://www.verot.net/php_class_upload.htm It has the features that solve ur problem easily. Link to comment https://forums.phpfreaks.com/topic/194123-avoiding-poor-quality-on-thumbnail-image/#findComment-1021373 Share on other sites More sharing options...
jskywalker Posted March 4, 2010 Share Posted March 4, 2010 If a picture has dimension 600x100, its resized to 200x33,3, which is OK But is a picture has dimensions 100x600 its resized to 300x50, which is NOT OK Link to comment https://forums.phpfreaks.com/topic/194123-avoiding-poor-quality-on-thumbnail-image/#findComment-1021377 Share on other sites More sharing options...
greens85 Posted March 4, 2010 Author Share Posted March 4, 2010 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 Link to comment https://forums.phpfreaks.com/topic/194123-avoiding-poor-quality-on-thumbnail-image/#findComment-1021396 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.