ARRRRGH! Just got up, feel like I have a hangover which is not really fair because I didnt drink so dont deserve one. It really is screwed up, you pull an all nighter and when you get up you look at the code you produced and it just isnt your best work... and the question pops up, why bother? Sorry, a bit of a rant in the middle of my coffee ;) just wanted to thank all of you who replied, I really appreciate it... was way out in the zonked zone when I wrote and asked for help and the fact that some of you actually read that long ass bit of code.... AND responded shows that there IS hope for humanity, coz there are a lot of good folk still out there. Ok, a bit dramatic... but still not thinking too straight, gotta refill my cup! Thanks and tcare ppl! /Ryan ------ - The faulty interface lies between the chair and the keyboard. - Creativity is great, but plagiarism is faster! - Smile, everyone loves a moron. :-) ----- Original Message ---- From: Maciek Sokolewicz <tularis@xxxxxxxxx> To: Ryan S <genphp@xxxxxxxxx> Cc: php php <php-general@xxxxxxxxxxxxx> Sent: Wednesday, October 15, 2008 12:25:29 PM Subject: Re: Brain dead... write image to file Ryan S wrote: > Hey all, > > am feeling a bit brain dead, pulled an all nighter and would appreciate some help as have already wasted over 2hrs on this :( > just not thinking straight. > I got this script off the net, cant even remember where :( its basically to resize an uploaded image (i have a script that does exactly this that i created ages ago... but cant find it and if i remember corrrectly that only resizes jpgs, this one does gifs and pngs as well) > > the way the original guy wrote it is that it writes the uploaded image to the DB, i'm just trying for it to create a resized image *instead of writing to the db*. > > The code is below, needless to say, my little block of code to write an the image to file is not working... would appreciate some help. > > <?php > //$conn = mysql_connect("localhost", "username", "password") or die(mysql_error()); > //mysql_select_db('test', $conn) or die(mysql_error()); > > > if($_FILES['userfile']['tmp_name']){ > resize(); > //$q = "INSERT INTO test VALUES ('', '".$blob_arr['image']."', '".$blob_arr['thumb']."', '".$blob_arr['type']."')"; > // $aa = mysql_query($q,$conn) or die(mysql_error()); > > /////////########## Start my code try > $uploaddir = 'C:\\wamp\\www\\ezee\\funny\\'; > $filename = $uploaddir.'test.jpg'; > $somecontent = $blob_arr['thumb']; > > if (is_writable($filename)) { > if (!$handle = fopen($filename, 'w')) { > echo "Cannot open file ($filename)"; > exit; > } > if (fwrite($handle, $somecontent) === FALSE) { > echo "Cannot write to file ($filename)"; > exit; > } > > fclose($handle); > > } else { echo "The file $filename is not writable";} > > > > header( "Content-type: ".$blob_arr['type'].""); > } > /////////########## End my code try > > > > function resize(){ > global $blob_arr; > $temp_name =$_FILES['userfile']['tmp_name']; > $userfile_name =$_FILES['userfile']['name']; > $userfile_size =$_FILES['userfile']['size']; > $userfile_type =$_FILES['userfile']['type']; > > $thumb_width=90; > $thumb_height=90; > $image_width=200; > $image_height=200; > > if (!($userfile_type =="image/pjpeg" OR $userfile_type =="image/jpeg" OR $userfile_type=="image/gif" OR $userfile_type=="image/png" OR $userfile_type=="image/x-png")){ > die ("You can upload just images in .jpg .jpeg .gif and .png format!<br / >"); > } > $data = fread(fopen($temp_name, "rb"), filesize($temp_name)); > $src_image = imagecreatefromstring($data); > $width = imagesx($src_image); > $height = imagesy($src_image); > if ($thumb_width && ($width < $height)) { > $thumb_width = ($thumb_height / $height) * $width; > } else { > $thumb_height = ($thumb_width / $width) * $height; > } > if ($image_width && ($width < $height)) { > $image_width = ($image_height / $height) * $width; > } else { > $image_height = ($image_width / $width) * $height; > } > $dest_img = imagecreatetruecolor($thumb_width, $thumb_height); > $i_dest_img = imagecreatetruecolor($image_width, $image_height); > imagecopyresized($dest_img, $src_image,0, 0, 0, 0,$thumb_width, $thumb_height,$width, $height); > imagecopyresized($i_dest_img, $src_image,0, 0, 0, 0,$image_width, $image_height,$width, $height); > ob_start(); > if($userfile_type == "image/jpeg" OR $userfile_type == "image/pjpeg"){ > imagejpeg($dest_img); > } > if($userfile_type == "image/gif"){ > imagegif($dest_img); > } > if($userfile_type == "image/png" OR $userfile_type == "image/x-png"){ > imagepng($dest_img); > } > $binaryThumbnail = ob_get_contents(); > ob_end_clean(); > ob_start(); > if($userfile_type == "image/jpeg" OR $userfile_type == "image/pjpeg"){ > imagejpeg($i_dest_img); > } > if($userfile_type == "image/gif"){ > imagegif($i_dest_img); > } > if($userfile_type == "image/png" OR $userfile_type == "image/x-png"){ > imagepng($i_dest_img); > } > $binaryImage = ob_get_contents(); > ob_end_clean(); > if(!get_magic_quotes_gpc()){ > $binaryThumbnail=addslashes($binaryThumbnail); > $binaryImage=addslashes($binaryImage); > } > $blob_arr['image']=$binaryImage; > $blob_arr['thumb']=$binaryThumbnail; > $blob_arr['type']=$userfile_type; > } > if($_POST['submit']){ > > > > // $Rs = mysql_query("SELECT * FROM funny_test WHERE id = '".mysql_insert_id()."'") or die(mysql_error()); > // $row_Rs = mysql_fetch_assoc($Rs); > // header( "Content-type: ".$row_Rs['typ'].""); > // echo $row_Rs['thb']; > > > > > > > > > > > }else{ > ?> > <form name="form1" method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>"> > <input id="userfile" name="userfile" type="file" /> > <input type="submit" name="submit" value="Submit" /> > </form> > <?php > } > ?> Wow, that's one ugly ass script! Basically, to answer your question: use the SECOND parameter to imagejpeg/imagepng/imagewhatever. The 2nd parameter takes a string which denotes the path to the file it should store it in. This should work a bit better for you: <?php function resizeImage($origPath, $destPath=null, $outputType='png') { // dimensions of the thumbnail to be created // we will retain aspect-ratio later on $destHeight = 90; // pixels $destWidth = 90; // pixels $origImage = file_get_contents($origPath); // reading original failed if(false === $origImage) { return false; } $origStream = imagecreatefromstring($origImage); // unsupported image type provided if(false === $origStream) { return false; } // calculate thumbnail size, retaining aspect ratio $origHeight = imagesy($origStream); $origWidth = imagesx($origStream); if( ($origHeight/$origWidth) > ($destHeight/$destWidth) ) { $destWidth = ($destHeight/$origHeight)*$destWidth; } else { $destHeight = ($destWidth/$origWidth)*$destHeight; } $destStream = imagecreatetruecolor($destWidth, $destHeight); imagecopyresampled($destStream, $origStream, 0, 0, 0, 0, $destWidth, $destHeight, $origWidth, $origHeight); // write the image switch($outputType) { case 'png': imagepng($destStream, $destPath); break; case 'jpg': case 'jpeg': imagejpeg($destStream, $destPath); break; case 'gif': imagegif($destStream, $destPath); break; } // free memory imagedestroy($destStream); imagedestroy($origStream); return true; } This function is slightly easier for you to use. pass in the original path to the image, 2nd param determines if it should be saved anywhere or directly sent to output (by passing null. Be sure to set the correct header first though) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php