I have this code which allows users to upload images and resize them. I would like instead of an upload, a fixed image from my server. Upload Images Below (Web or Computer-Based) <form action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> COMPUTER-based image upload:<br /> <input name="uploadedfile" type="file" /><br /> WEB-based image upload (URL):<br /> <input type="text" name="url" /><br /> <input type="submit" value="Upload File" name="upload"/> </form><br /> Images Uploaded This Session<br /> (Click on Image to Resize and/or Print)<br /> <?php if ($handle = opendir('images')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && strstr($file,session_id().'_thumb.')) { echo '<a href="?print='.$file.'"><img src="images/'.$file.'" /></a>'; } } closedir($handle); } Code (markup): The user should click on a given image, and be taken directly with this image to the step "Click on Image to Resize and/or Print" Thanks!
You need to list the files in the directory - if there aren't many that should be a relatively simple directory listing process. If you have lots you'll want KC Finder or something like it (write your own?) ref: https://sourceforge.net/projects/kcfinder/
Your question is not at all clear. Do you want to show a default image instead of user uploaded image in the "print" link? or do you want code to upload image using this form?
I want to show a thumbnail of the image. When the user clicks on the thumbnail, the full size version is fetched "uploaded" and is then processed by further code before printing (over several pages if oversize). I hope that's possible.
PHP cannot show thumbnail of image "before" uploading. You will have to upload the image to a folder, create a smaller thumbnail using the uploaded image, (probably in a different folder), only then you can display thumbnail, and link it to the print page.
This is joke code but maybe it'll make it clearer. <img src="thumbnail.jpg" onclick=(get image.jpg already on website)> PRINT BUTTON then this image gets processed by php for special printing.
I get what you're after. Did you look at the demos of KC Finder? Does it do what you're after as far as selecting an image on your server? Where does it fall short?
<?php session_start(); // SETTINGS $thumbwidth = 100; $deleteDays = 1; $size['letter']['width'] = 21.59; $size['letter']['height'] = 27.94; $size['a4']['width'] = 21.0; $size['a4']['height'] = 29.7; // A4 210 x 297 // Letter 215.9 x 279.4 // 1 inch = 2.54 cm $inch = 2.54; $border = 2.54; function make_thumb($src,$dest,$desired_width) { $arr = getimagesize($src); /* read the source image */ switch ($arr['mime']) { case 'image/jpeg' : $source_image = imagecreatefromjpeg($src); break; case 'image/png' : $source_image = imagecreatefrompng($src); break; case 'image/gif' : $source_image = imagecreatefromgif($src); break; default: $ext = ''; } $width = imagesx($source_image); $height = imagesy($source_image); /* find the "desired height" of this thumbnail, relative to the desired width */ $desired_height = floor($height*($desired_width/$width)); /* create a new, "virtual" image */ $virtual_image = imagecreatetruecolor($desired_width,$desired_height); /* copy source image at a resized size */ imagecopyresized($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height); switch ($arr['mime']) { case 'image/jpeg' : imagejpeg($virtual_image,$dest); break; case 'image/png' : imagepng($virtual_image,$dest); break; case 'image/gif' : imagegif($virtual_image,$dest); break; default: $ext = ''; } /* create the physical thumbnail image to its destination */ imagejpeg($virtual_image,$dest); } if(isset($_POST['upload']) && $_POST['url']=='') { $target_path = "images/"; $large = $target_path . date('YmdHis').'_'.session_id().'.'.substr(basename( $_FILES['uploadedfile']['name']),-3); $thumb = $target_path . date('YmdHis').'_'.session_id().'_thumb.'.substr(basename( $_FILES['uploadedfile']['name']),-3); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $large)) { make_thumb($large,$thumb,$thumbwidth); } } elseif (strlen($_POST['url'])>0) { $arr = getimagesize($_POST['url']); $ext = ''; switch ($arr['mime']) { case 'image/jpeg' : $ext = 'jpg'; break; case 'image/png' : $ext = 'png'; break; case 'image/gif' : $ext = 'gif'; break; default: $ext = ''; } if ($ext != '') { $file = 'images/'.date('YmdHis').'_'.session_id(); $fh = fopen($file.'.'.$ext,'w+'); $img = file_get_contents($_POST['url']); fwrite($fh,$img); fclose($fh); make_thumb($file.'.'.$ext,$file.'_thumb.'.$ext,$thumbwidth); } } ?> if (ratio == 'yes') { document.getElementById('imgheight').readOnly = true; <?php if (isset($_GET['print'])) { $arr = getimagesize('images/'.str_replace('_thumb','',$_GET['print'])); echo 'x = '.$arr[0].';'; echo 'y = '.$arr[1].';'; } ?> width = document.getElementById('imgwidth').value; one = x/width; height = y/one; if (height > 0) { document.getElementById('imgheight').value = height.toFixed(2); } } else { document.getElementById('imgheight').readOnly = false; } } function calc() { if(document.getElementById('imgheight').readOnly == true) { <?php if (isset($_GET['print'])) { $arr = getimagesize('images/'.str_replace('_thumb','',$_GET['print'])); echo 'x = '.$arr[0].';'; echo 'y = '.$arr[1].';'; } ?> width = document.getElementById('imgwidth').value; one = x/width; height = y/one; if (height > 0) { document.getElementById('imgheight').value = height.toFixed(2); } } } </script> <?php if (count($_GET)==0) { ?> <h1>FULL SIZE PRINTER/RESIZER<br></h1> <FONT COLOR="#33CCFF" SIZE=5> <b>Upload Images Below<br> <FONT COLOR="#33CCFF" SIZE=4> (Web or Computer-Based)</h2></font> <br /> <form action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10000000" /> <FONT COLOR="#FFFFCC" SIZE=4> <br> COMPUTER-based image upload:<br /> <input name="uploadedfile" type="file" /><br /><br /> WEB-based image upload (URL):<br /> <input type="text" name="url" /><br /><br /> <input type="submit" value="Upload File" name="upload"/> </form> <br /> <FONT COLOR="#33CCFF" SIZE=5> Images Uploaded This Session<br /> <FONT COLOR="#33CCFF" SIZE=4> (Click on Image to Resize and/or Print)</font><br /> <?php if ($handle = opendir('images')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && strstr($file,session_id().'_thumb.')) { echo '<a href="?print='.$file.'"><img src="images/'.$file.'" /></a>'; } } closedir($handle); } } else if (isset($_GET['print'])) { echo '<img src="images/'.$_GET['print'].'" />'; ?> <form action="?printview" method="post"> <input type="hidden" name="image" value="<?php echo $_GET['print'];?>" /> <p style="display: none;">Paper size: <select name="format"><option value="letter" selected>Letter</option><option value="a4">A4</option></select></p> <p>Image Ratio: <input type="radio" name="ratio" value="yes" checked onClick="manage(this.value);"/>Keep <input type="radio" name="ratio" value="no" onClick="manage(this.value);"/>Ignore</p> <p style="display: none;">Image measurements: <select name="meassure"><option value="in" selected>inch</option><option value="cm">cm</option></select></p> <p>Image Width: <input type="text" name="width" id="imgwidth" onKeyUp="calc();"/></p> <p>Image Height: <input type="text" name="height" id="imgheight" readonly/></select></p> <input type="submit" /> </form> <?php } elseif(isset($_GET['printview'])) { ?> <img src="images/<?php echo $_POST['image'];?>" /><br /> <input type="button" onClick="javascript:window.print();" value="Print the large Image" /> </div> <?php } elseif(isset($_GET['delete'])) { if ($handle = opendir('images')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $parts = explode('_',$file); if ($parts[0]<date('YmdHis',strtotime('-'.$deleteDays.' days'))) { unlink ('images/'.$file); } } } closedir($handle); } } ?> <?php // PHOTO PRINT END ?> </div> <?php if(isset($_GET['printview'])) { $_POST['image'] = str_replace('_thumb','',$_POST['image']); if ($_POST['meassure']=='in') { $imgWidth = $_POST['width']*$inch; $imgHeight = $_POST['height']*$inch; } else { $imgWidth = $_POST['width']; $imgHeight = $_POST['height']*$inch; } if ($_POST['format']=='letter') { $maxPageWidth = $size['letter']['width'] - (2*$border); $maxPageHeight = $size['letter']['height'] - (2*$border); } else { $maxPageWidth = $size['a4']['width'] - (2*$border); $maxPageHeight = $size['a4']['height'] - (2*$border); } // echo "$imageX = ceil($imgWidth/$maxPageWidth); // $imageY = ceil($imgHeight/$maxPageHeight); "; $imageX = ceil($imgWidth/$maxPageWidth); $imageY = ceil($imgHeight/$maxPageHeight); // echo '<p>'.$imageX.':'.$imageY.'</p>'; $w = ($size[$_POST['format']]['width']-(2*$border)).'cm'; $h = ($size[$_POST['format']]['height']-(2*$border)).'cm'; ?> <style type="text/css"> @media print{ .img { height: <?php echo $h;?>; width: <?php echo $w;?>; overflow: hidden; float:left; page-break-before: always; } .fimg { height: <?php echo $h;?>; width: <?php echo $w;?>; overflow: hidden; float:left; } body { background-image: none; background-color: #ffffff; } #canvas, #preview { display: none; } } @media screen{ .img { height: <?php echo $h;?>; width: <?php echo $w;?>; overflow: hidden; float:left; page-break-before: always; } .fimg { height: <?php echo $h;?>; width: <?php echo $w;?>; overflow: hidden; float:left; } #printing { display: none; } } </style> <div id="printing"> <?php for($x=0; $x<$imageX; $x++) { for ($y=0; $y<$imageY; $y++) { if ($x==0 && $y==0) { echo '<div class="fimg">'; } else { echo '<div class="img">'; } echo ' <img src="images/'.$_POST['image'].'" style="width: '.$_POST['width'].$_POST['meassure'].';height: '.$_POST['height'].$_POST['meassure'].'; position: relative; top: -'.($y*$maxPageHeight).'cm; left: -'.($x*$maxPageWidth).'cm" /></div>'; } } echo '</div>'; } ?> Code (markup):
Put this in the <head> section of your HTML. <script type="text/javascript"> function showImage( id, file ){ f= file.replace( "_thumb", "" ); f= "<img src='images/" + f +"?r="+ (Math.random()*100) + "' />"; document.getElementById( id ).innerHTML = f; } </script> Then in PHP code, edit this code: <?php $count=1; if ($handle = opendir('images')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && strstr($file,session_id().'_thumb.')) { ++$count; $id= 'i'.$count; $large= str_replace( '_thumb', '', $file ); echo '<a onmouseover=" showImage( \''.$id.'\', \''.$file.'\' ) " href="?print='.$large.'"> <img src="images/'.$file.'" /></a> <div id="'.$id.'"></div> '; } } closedir($handle); } This will display the thumb nail for all uploaded images in the session. When user will move their mouse over the thumbnail image, a larger image will be shown just below the small thumbnail. When they will click the thumbnail, then they will be taken to your print page where they will see larger image and can choose print settings. I hope I understood you correctly...
I've been sent the links and taken a look. Is the main problem adapting the script you're using so that it works the way the old one does? print.php shows that you know how to list the contents of the directory, add a print button etc. 1round.html is focussed on uploads and displaying the user's existing uploads. It should be relatively straight forward to add the new functionality - but 1round.html will need to become 1round.php
You must show here a screen short of the problem like result print. Now i can't know what is result there. after some time i will try this code.