note 31308 added to function.imagepng

From: Date: Wed, 16 Apr 2003 23:14:44 +0000
Subject: note 31308 added to function.imagepng
Groups: php.notes 
Request: Send a blank email to php-notes+get-46715@lists.php.net to get a copy of this message
to all the ones, who like having their users fill their profil with an image without destroying a fixed design the following should be a great way to handle this problem. this file opens a picture from $imagepath and returns it as a valid picture to embed in: <img src="file.php?image=123.jpg[?maxX=200&maxY=150]"> (in [] = optional) but this file does more than this. it also adds black borders to files that are smaller than the max. size, so adding borders to the left and right where a image is too high :-) if there is a need for a copyright note this script will also help you. you can put in a various text to $copyright. the text length should be in relationship to $maxX and $maxY. Well there are other features of the script, just try'em out and have fun with it :-) bye <?php # standard height & weight if not given if(!isset($maxX)) $maxX = 100; if(!isset($maxY)) $maxY = 75; # colour- & textvalues $picBG = "0,0,0"; # RGB-value ! $picFG = "104,104,104"; # RGB-value ! $copyright = "stefan bechtold"; $font = 1; # minimal & maximum zoom $minZoom = 1; # per cent related on orginal (!=0) $maxZoom = 200; # per cent related on orginal (!=0) # paths $imgpath = "userimages/"; # ending with "/" ! $nopicurl = "../images/nopic.jpg"; # starting in $imagepath!!! $nofileurl = "../images/nofile.jpg"; # starting in $imagepath!!! if(!isset($image) || empty($image)) $imageurl = $imgpath . $nopicurl; elseif(! file_exists($imgpath . trim($image))) $imageurl = $imgpath . $nofileurl; else $imageurl = $imgpath . trim($image); # reading image $image = getImageSize($imageurl, $info); # $info, only to handle problems with earlier php versions... switch($image[2]) { case 1: # GIF image $timg = imageCreateFromGIF($imageurl); break; case 2: # JPEG image $timg = imageCreateFromJPEG($imageurl); break; case 3: # PNG image $timg = imageCreateFromPNG($imageurl); break; } # reading image sizes $imgX = $image[0]; $imgY = $image[1]; # calculation zoom factor $_X = $imgX/$maxX * 100; $_Y = $imgY/$maxY * 100; # selecting correct zoom factor, so that the image always keeps in the given format # no matter if it is more higher than wider or the other way around if((100-$_X) < (100-$_Y)) $_K = $_X; else $_K = $_Y; # zoom check to the original if($_K > 10000/$minZoom) $_K = 10000/$minZoom; if($_K < 10000/$maxZoom) $_K = 10000/$maxZoom; # calculate new image sizes $newX = $imgX/$_K * 100; $newY = $imgY/$_K * 100; # set start positoin of the image # always centered $posX = ($maxX-$newX) / 2; $posY = ($maxY-$newY) / 2; # creating new image with given sizes $imgh = imageCreateTrueColor($maxX, $maxY); # setting colours $cols = explode(",", $picBG); $bgcol = imageColorallocate($imgh, trim($cols[0]), trim($cols[1]), trim($cols[2])); $cols = explode(",", $picFG); $fgcol = imageColorallocate($imgh, trim($cols[0]), trim($cols[1]), trim($cols[2])); # fill background imageFill($imgh, 0, 0, $bgcol); # create small copy of the image imageCopyResampled($imgh, $timg, $posX, $posY, 0, 0, $newX, $newY, $image[0], $image[1]); # writing copyright note imageStringUp($imgh, $font, $maxX-9, $maxY-3, $copyright, $fgcol); # output switch($image[2]) { case 1: # GIF image header("Content-type: image/gif"); imageGIF($imgh); case 2: # JPEG image header("Content-type: image/jpeg"); imageJPEG($imgh); case 3: # PNG image header("Content-type: image/png"); imagePNG($imgh); } # cleaning cache imageDestroy($timg); imageDestroy($imgh); ?> -- http://www.php.net/manual/en/function.imagepng.php http://master.php.net/manage/user-notes.php?action=edit+31308 http://master.php.net/manage/user-notes.php?action=delete+31308 http://master.php.net/manage/user-notes.php?action=reject+31308

« previous php.notes (#46715) next »