note 106431 added to function.imagecopyresized

From: Date: Wed, 09 Nov 2011 07:35:38 +0000
Subject: note 106431 added to function.imagecopyresized
Groups: php.notes 
Request: Send a blank email to php-notes+get-184346@lists.php.net to get a copy of this message
<?php /** I made a little adjustment to "it at chmzap dot ru" code after using it and realizing that the resizing ratio was a bit off. The only change was in the logic where i replaced if($gis[0] <= $size) { $av = $x; $ah = $y; } else { $yc = $y*1.3333333; $d = $x>$yc?$x:$yc; $c = $d>$size ? $size/$d : $size; $av = $x*$c; //высота исходной картинки $ah = $y*$c; //длина исходной картинки } with $imgratio = $gis[0]/$gis[1]; if($imgratio>1) { $av=$size; $ah=$size/$imgratio; } else { $ah=$size; $av=$size*$imgratio; } We get the ratio of both sides of the image and determine which is larger, the larger side is then adjusted to the image size set by the user, while the smaller side is adjusted to a proportionate size based on the image ratio. */ /** * Make thumbs from JPEG, PNG, GIF source file * * $tmpname = $_FILES['source']['tmp_name']; * $size - max width size * $save_dir - destination folder * $save_name - tnumb new name * * Author: LEDok - http://www.citadelavto.ru/ */ function img_resize( $tmpname, $size, $save_dir, $save_name ) { $save_dir .= ( substr($save_dir,-1) != "/") ? "/" : ""; $gis = GetImageSize($tmpname); $type = $gis[2]; switch($type) { case "1": $imorig = imagecreatefromgif($tmpname); break; case "2": $imorig = imagecreatefromjpeg($tmpname);break; case "3": $imorig = imagecreatefrompng($tmpname); break; default: $imorig = imagecreatefromjpeg($tmpname); } $x = imageSX($imorig); $y = imageSY($imorig); $imgratio = $gis[0]/$gis[1]; if($imgratio>1) { $av=$size; $ah=$size/$imgratio; } else { $ah=$size; $av=$size*$imgratio; } $im = imagecreate($av, $ah); $im = imagecreatetruecolor($av,$ah); if (imagecopyresampled($im,$imorig , 0,0,0,0,$av,$ah,$x,$y)) if (imagejpeg($im, $save_dir.$save_name)) return true; else return false; } ?> And now how using this function fast <?php if ($_POST[pic]) { $tmpname = $_FILES['pic']['tmp_name']; @img_resize( $tmpname , 600 , "../album" , "album_".$id.".jpg"); @img_resize( $tmpname , 120 , "../album" , "album_".$id."_small.jpg"); @img_resize( $tmpname , 60 , "../album" , "album_".$id."verysmall.jpg"); } else echo "No Images uploaded via POST"; ?> ---- Server IP: 69.147.83.197 Probable Submitter: 41.139.91.108 ---- Manual Page -- http://www.php.net/manual/en/function.imagecopyresized.php Edit -- https://master.php.net/note/edit/106431 Del: integrated -- https://master.php.net/note/delete/106431/integrated Del: useless -- https://master.php.net/note/delete/106431/useless Del: bad code -- https://master.php.net/note/delete/106431/bad+code Del: spam -- https://master.php.net/note/delete/106431/spam Del: non-english -- https://master.php.net/note/delete/106431/non-english Del: in docs -- https://master.php.net/note/delete/106431/in+docs Del: other reasons-- https://master.php.net/note/delete/106431 Reject -- https://master.php.net/note/reject/106431 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#184346) next »