mrheff Posted March 5, 2007 Share Posted March 5, 2007 so say i have a form, which does one of those actions like $Server_SElf, y know what i mean, is it then possible for me to strip out the form elements completely and just send variables to it, have it do its magic and then redierect to a success/failed miserably page? For an example i want to change a form that does stuff similar to this <a href="http://koivi.com/php-gd-image-watermark/">someones uploaded script</a> into a function i will include into series of actions, (send to dir's, watermark according to Portrait/landscape) etc Anyway if someone could point me in the right direction that would be fresh like a vegetable, heff. Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/ Share on other sites More sharing options...
monk.e.boy Posted March 5, 2007 Share Posted March 5, 2007 What exactly is your question? Please post some code. monk.e.boy Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-199983 Share on other sites More sharing options...
mrheff Posted March 5, 2007 Author Share Posted March 5, 2007 sorry if i was not that clear.... ... id like to change this form 'ere, into a page that i can send to from a different form now is this is a case of just sending the variable into this form or do i need to edit out all the form input bits?,. The next problem being i would like to watermark on a for each $file, so as i might do batch watermarks. The link in my previous mail is where i got this script from so as you can see it working. thanks alot, heff. <?php ob_start(); $disp_width_max=150; // used when displaying watermark choices $disp_height_max=80; // used when displaying watermark choices $edgePadding=0; // used when placing the watermark near an edge $quality=100; // used when generating the final image $default_watermark='carbontall.png'; // the default image to use if no watermark was chosen if(isset($_POST['process'])){ // an image has been posted, let's get to the nitty-gritty if(isset($_FILES['watermarkee']) && $_FILES['watermarkee']['error']==0){ // be sure that the other options we need have some kind of value if(!isset($_POST['save_as'])) $_POST['save_as']='jpeg'; if(!isset($_POST['v_position'])) $_POST['v_position']='bottom'; if(!isset($_POST['h_position'])) $_POST['h_position']='right'; if(!isset($_POST['wm_size'])) $_POST['wm_size']='1'; if(!isset($_POST['watermark'])) $_POST['']=$default_watermark; // file upload success $size=getimagesize($_FILES['watermarkee']['tmp_name']); if($size[2]==2 || $size[2]==3){ // it was a JPEG or PNG image, so we're OK so far $original=$_FILES['watermarkee']['tmp_name']; $target_name=date('YmdHis').'_'. // if you change this regex, be sure to change it in generated-images.php:26 preg_replace('`[^a-z0-9-_.]`i','',$_FILES['watermarkee']['name']); $target=dirname(__FILE__).'/results/'.$target_name; $watermark=dirname(__FILE__).'/watermarks/'.$_POST['watermark']; $wmTarget=$watermark.'.tmp'; $origInfo = getimagesize($original); $origWidth = $origInfo[0]; $origHeight = $origInfo[1]; $waterMarkInfo = getimagesize($watermark); $waterMarkWidth = $waterMarkInfo[0]; $waterMarkHeight = $waterMarkInfo[1]; // watermark sizing info if($_POST['wm_size']=='larger'){ $placementX=0; $placementY=0; $_POST['h_position']='center'; $_POST['v_position']='center'; $waterMarkDestWidth=$waterMarkWidth; $waterMarkDestHeight=$waterMarkHeight; // both of the watermark dimensions need to be 5% more than the original image... // adjust width first. if($waterMarkWidth > $origWidth*1.05 && $waterMarkHeight > $origHeight*1.05){ // both are already larger than the original by at least 5%... // we need to make the watermark *smaller* for this one. // where is the largest difference? $wdiff=$waterMarkDestWidth - $origWidth; $hdiff=$waterMarkDestHeight - $origHeight; if($wdiff > $hdiff){ // the width has the largest difference - get percentage $sizer=($wdiff/$waterMarkDestWidth)-0.05; }else{ $sizer=($hdiff/$waterMarkDestHeight)-0.05; } $waterMarkDestWidth-=$waterMarkDestWidth * $sizer; $waterMarkDestHeight-=$waterMarkDestHeight * $sizer; }else{ // the watermark will need to be enlarged for this one // where is the largest difference? $wdiff=$origWidth - $waterMarkDestWidth; $hdiff=$origHeight - $waterMarkDestHeight; if($wdiff > $hdiff){ // the width has the largest difference - get percentage $sizer=($wdiff/$waterMarkDestWidth)+0.05; }else{ $sizer=($hdiff/$waterMarkDestHeight)+0.05; } $waterMarkDestWidth+=$waterMarkDestWidth * $sizer; $waterMarkDestHeight+=$waterMarkDestHeight * $sizer; } }else{ $waterMarkDestWidth=round($origWidth * floatval($_POST['wm_size'])); $waterMarkDestHeight=round($origHeight * floatval($_POST['wm_size'])); if($_POST['wm_size']==1){ $waterMarkDestWidth-=2*$edgePadding; $waterMarkDestHeight-=2*$edgePadding; } } // OK, we have what size we want the watermark to be, time to scale the watermark image resize_png_image($watermark,$waterMarkDestWidth,$waterMarkDestHeight,$wmTarget); // get the size info for this watermark. $wmInfo=getimagesize($wmTarget); $waterMarkDestWidth=$wmInfo[0]; $waterMarkDestHeight=$wmInfo[1]; $differenceX = $origWidth - $waterMarkDestWidth; $differenceY = $origHeight - $waterMarkDestHeight; // where to place the watermark? switch($_POST['h_position']){ // find the X coord for placement case 'left': $placementX = $edgePadding; break; case 'center': $placementX = round($differenceX / 2); break; case 'right': $placementX = $origWidth - $waterMarkDestWidth - $edgePadding; break; } switch($_POST['v_position']){ // find the Y coord for placement case 'top': $placementY = $edgePadding; break; case 'center': $placementY = round($differenceY / 2); break; case 'bottom': $placementY = $origHeight - $waterMarkDestHeight - $edgePadding; break; } if($size[2]==3) $resultImage = imagecreatefrompng($original); else $resultImage = imagecreatefromjpeg($original); imagealphablending($resultImage, TRUE); $finalWaterMarkImage = imagecreatefrompng($wmTarget); $finalWaterMarkWidth = imagesx($finalWaterMarkImage); $finalWaterMarkHeight = imagesy($finalWaterMarkImage); imagecopy($resultImage, $finalWaterMarkImage, $placementX, $placementY, 0, 0, $finalWaterMarkWidth, $finalWaterMarkHeight ); if($size[2]==3){ imagealphablending($resultImage,FALSE); imagesavealpha($resultImage,TRUE); imagepng($resultImage,$target,$quality); }else{ imagejpeg($resultImage,$target,$quality); } imagedestroy($resultImage); imagedestroy($finalWaterMarkImage); // display resulting image for download ?> <div> <h1>Watermarked Image</h1> <p> <a href="<?php echo $_SERVER['PHP_SELF'] ?>">Back To Form</a> <a href="generated-images.php">View Previously Watermarked Images</a> </p> <p> Below is the resulting watermarked image based on your input on the submission form. To save the image, right-click (control click on a Mac) and select the option similar to "Save Image As..." You can then save the image to your harddrive when prompted for a save location. </p> <p> Watermarked images are also saved on this system. You can view and/or delete watermarked images <a href="generated-images.php">here</a>. </p> <p align="center"> <img src="results/<?php echo $target_name ?>?id=<?php echo md5(time()) ?>" alt="" /> </p> <hr> </div> <?php unlink($wmTarget); }else{ ?> <div> <h1>Watermarked Image</h1> <p class="errorMsg">The image uploaded was not a JPEG or PNG image.</p> </div> <?php } }else{ ?> <div> <h1>Watermarked Image</h1> <p class="errorMsg">Unable to upload the image to watermark.</p> </div> <?php } }else{ // no image posted, show form for options ?> <div> <h1>Watermark A JPEG or PNG Image</h1> <p> <a href="generated-images.php">View Previously Watermarked Images</a> </p> <p> please ensure png-24 for correct proccessing. </p> <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>"> <table cellpadding="2" cellspacing="0" border="0"> <tr> <th width="50%"> Image to WaterMark: <p>(72dpi, RGB JPEG/PNG)</p> </th> <td width="50%"> <input type="file" name="watermarkee" /> </td> </tr> <tr> <th valign="top"> Choose Watermark:<br /> <p> watermarks placed in directory. </p> </th> <td valign="top"> <table cellpadding="2" cellspacing="0" border="0"> <?php $dir=dirname(__FILE__).'/watermarks'; if (is_dir($dir)) { if ($dh = opendir($dir)) { $i=0; $watermarks=array(); while (($file = readdir($dh)) !== FALSE) { if(!preg_match('`\.png$`',$file)) continue; $watermarks[]=$file; } closedir($dh); // now sort the array according to file name asort($watermarks); foreach($watermarks as $file){ // restrain display width $size=getimagesize($dir.'/'.$file); if($size[0] > $disp_width_max && $disp_width_max){ $reduction=$disp_width_max / $size[0]; $size[0]=$size[0]*$reduction; $size[1]=$size[1]*$reduction; $size[3]=sprintf('width="%d" height="%d"',$size[0],$size[1]); // also restrain the height after a resize if($size[1] > $disp_height_max && $disp_height_max){ $reduction=$disp_height_max / $size[1]; $size[0]=$size[0]*$reduction; $size[1]=$size[1]*$reduction; $size[3]=sprintf('width="%d" height="%d"',$size[0],$size[1]); } } // also restrain the height if($size[1] > $disp_height_max && $disp_height_max){ $reduction=$disp_height_max / $size[1]; $size[0]=$size[0]*$reduction; $size[1]=$size[1]*$reduction; $size[3]=sprintf('width="%d" height="%d"',$size[0],$size[1]); } echo ' <tr>',"\n", ' <td>',"\n", ' <input type="radio" value="',$file,'" name="watermark" /> ', '<img src="watermarks/',$file,'" ',$size[3],' alt="" />',"\n", ' </td>',"\n", ' </tr>',"\n"; $i++; } if($i==0){ // no images at this time echo ' <tr>',"\n", ' <td>',"\n", ' There are currently no watermark images to use with this the system on this server.',"\n", ' </td>',"\n", ' </tr>',"\n"; } } } ?> </table> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" name="process" value="Watermark Image" /> </td> </tr> </table> </form> </div> <?php } $page_display=ob_get_clean(); function resize_png_image($img,$newWidth,$newHeight,$target){ $srcImage=imagecreatefrompng($img); if($srcImage==''){ return FALSE; } $srcWidth=imagesx($srcImage); $srcHeight=imagesy($srcImage); $percentage=(double)$newWidth/$srcWidth; $destHeight=round($srcHeight*$percentage)+1; $destWidth=round($srcWidth*$percentage)+1; if($destHeight > $newHeight){ // if the width produces a height bigger than we want, calculate based on height $percentage=(double)$newHeight/$srcHeight; $destHeight=round($srcHeight*$percentage)+1; $destWidth=round($srcWidth*$percentage)+1; } $destImage=imagecreatetruecolor($destWidth-1,$destHeight-1); if(!imagealphablending($destImage,FALSE)){ return FALSE; } if(!imagesavealpha($destImage,TRUE)){ return FALSE; } if(!imagecopyresampled($destImage,$srcImage,0,0,0,0,$destWidth,$destHeight,$srcWidth,$srcHeight)){ return FALSE; } if(!imagepng($destImage,$target)){ return FALSE; } imagedestroy($destImage); imagedestroy($srcImage); return TRUE; } echo '<?xml version="1.0" encoding="iso-8859-1"?>',"\n"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Watermarking JPEG and PNG Images with PHP and GD2</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="description" content="A PHP implementation to watermark JPEG or PNG images with a PNG-24 image with alpha transparency." /> <style type="text/css"> th{ text-align: right; font-weight: bold; } th p{ font-weight: normal; font-size: 75%; color: #c00; background-color: transparent; } </style> </head> <body> <div> <?php echo $page_display ?></div> <div><h1><a href="batch.php">Batch Upload</a></h1> </div> </body> </html> Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-200029 Share on other sites More sharing options...
monk.e.boy Posted March 5, 2007 Share Posted March 5, 2007 You want me to read all that!? : monk.e.boy Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-200036 Share on other sites More sharing options...
mrheff Posted March 5, 2007 Author Share Posted March 5, 2007 well i need to give it all so you know what im on about.I only sent a link in the orginal so as youd know what i meant without havin to drag all the way through it. in short i just want to know how to change it into something i can send to it from an external form not just itself, im still getting to grips with all this so i just want to know the possiblities and how i got about doing it, any ideas? pleases....... beg beg beg beg..... mrheff. Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-200052 Share on other sites More sharing options...
monk.e.boy Posted March 5, 2007 Share Posted March 5, 2007 put the form processing stuff into a separate .php file. Then you can put the URL of this new PHP page into the forms POST to URL. change: <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>"> to: <form method="post" enctype="multipart/form-data" action="my_form_processor.php"> Cutting up your current file will take a bit of testing. But it is quite easy. monk.e.boy Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-200085 Share on other sites More sharing options...
mrheff Posted March 5, 2007 Author Share Posted March 5, 2007 thanks man ill prolly hit back if i have anyprogress, One more thing mate when i am passing on variables using an url, eg formprocessing.php?monkeytype=gorilla&money=0 do i have to extract the variable with a $_get type deal or does it just know what it is? for example if i go one to use <php echo = 'you are sponsoring a ' $monkeytype'.'; ?> within the formprocessing.php document do i need to get the variable from the adress or will just reveal itself if ya know what i mean? THANKS MAN, your a legend. Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-200122 Share on other sites More sharing options...
monk.e.boy Posted March 6, 2007 Share Posted March 6, 2007 use: <?php if( isset( $_GET['monkey'] ) ) { $i = $_GET['monkey']; } ?> you may want to escape the $_GET to stop x-site scripting (I think) monk.e.boy Link to comment https://forums.phpfreaks.com/topic/41275-changing-a-form-into-a-function/#findComment-200615 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.