PHP - Imagerotate() Removing Transparency
Im trying to make a script that previews the level for a game, but im having issues with transparency and the rotation of each image.
you can see the problem he http://beta.trackmill.com/DUI/preview/ here is the php file <?php header('Content-Type: image/png'); $image = imagecreatefrompng('images/Background.png'); function radiansToDegrees($radians) { return $radians * 180 / pi(); } $map = file_get_contents('map.txt'); $blocks = split("<obj", $map); for($i=2; $i<count($blocks); $i++) { $arg = split(" ", $blocks[$i]); $n = str_replace("n", "", str_replace("=", "", str_replace('"', "", $arg[1]))); $x = str_replace("x", "", str_replace("=", "", str_replace('"', "", $arg[2]))); $x = $x * 20 - 13; $y = str_replace("y", "", str_replace("=", "", str_replace('"', "", $arg[3]))); $y = $y * 22 + 15; $a = str_replace("a", "", str_replace("=", "", str_replace('"', "", $arg[4]))); $a = radiansToDegrees($a); $t = str_replace("t", "", str_replace("=", "", str_replace('"', "", $arg[5]))); $e = str_replace("e", "", str_replace("=", "", str_replace('"', "", $arg[6]))); $f = str_replace("f", "", str_replace("=", "", str_replace('"', "", str_replace('/>', "", $arg[7])))); $blockimage = imagecreatefrompng("images/$n.png"); $blockimage = imagerotate($blockimage, -$a, 0, 0) ; imagealphablending($blockimage, false); imagesavealpha($blockimage, true); imagecopy($image, $blockimage, $x, $y, 0, 0, imagesx($blockimage), imagesy($blockimage)); //echo "$i | $n - $x - $y - $a - $t - $e - $f <br>"; } imagepng($image); imagedestroy($image); ?> if you require the .zip containing the images etc, just reply and i will upload it as soon as possible Similar TutorialsI would like to select a color that isn't in an image, any thoughts on the best way? Maybe this isn't even the best way to do this. I am using imagerotate, and for the 3rd parameter, I would like the uncovered area to be transparent. I have done this, but I had to use a color then make every color in the image of that color transparent. so, either what is the best way: A. Is there a good way to do this? B. save every pixel color in an array then loop though the array testing colors that are not in the array and setting that as the transparent value. C. Other. What? Hello everyone, I am trying to rotate an image, but when I run my script I get: Fatal error: Call to undefined function imagerotate() in test.php on line 15 When I run phpinfo(), it shows GD support is enabled. Anyone have any ideas on how to get this to work? Thanks! weee So I wanted to preserve the transparency on a circle shaped .png file. I figured the best way to do this was to fill the background in with some particular color and then use imagecolortransparent() to hide the color. Using code found he http://www.php.net/manual/en/function.imagecolortransparent.php I tried to do just this. I kept getting errors and so to isolate the problem I made a new file and copied the original code: Code: [Select] <?php // Create a 55x30 image $im = imagecreatetruecolor(55, 30); $red = imagecolorallocate($im, 255, 0, 0); $black = imagecolorallocate($im, 0, 0, 0); // Make the background transparent imagecolortransparent($im, $black); // Draw a red rectangle imagefilledrectangle($im, 4, 4, 50, 25, $red); // Save the image imagepng($im, './imagecolortransparent.png'); imagedestroy($im); ?>This still didn't work : Warning: imagepng() [function.imagepng]: Unable to open './imagecolortransparent.png' for writing: Permission denied in /Library/WebServer/Documents/temp/test.php on line 21 So I deleted './imagecolortransparent.png' and got: �PNG IHDR7�tRNSn��AIDATX���1 �����l�.B�Er[�DH���⦞�^r��x���%�K��/9^r�����U,ҟ� IEND�B`� IDK what to do, can someone explain what is wrong or what other method I can use to preserve the transparency of the .png? I am working with the GD Library, and I was wondering if anyone knew of a function or a way to set the transparency of a GD image (Not the final image) What I am doing is taking an jpg image as the bottom image, then I would like to place a jpg image on top of it with 50 transparency, then flatten the image as a jpg. I can not find anything on this, only information on setting png alpha values. Hey guys i have a script that create thumnail version of any JPG, PNG, GIF images. It works great but the only problem is it's not keeping the transparency. It adds a black background instead. I made a very big search and tryed at least 100 things and i keep gething the black background ... This is the original image with the transparancy: This is the image after it's passed in the thumnail script: <?php // ... // Create output image $outImg = imagecreatetruecolor ($outWidth, $outHeight); // Load src image switch($srcType) { case "png": $srcImg = imagecreatefrompng($uri); $background = imagecolorallocate($srcImg, 255, 255, 255); imagecolortransparent($srcImg, $background); imagealphablending($srcImg, true); imagesavealpha($srcImg, true); break; case "gif": $srcImg = imagecreatefromgif($uri); break; case "jpeg": $srcImg = imagecreatefromjpeg($uri); break; default: diewith("unsupported file type '$uri'"); }; // Resize image imagecopyresampled($outImg, $srcImg, 0, 0, 0, 0, $outWidth, $outHeight, $srcWidth, $srcHeight); // Save to cached thumb switch($srcType) { case "png": $res = imagepng($outImg, $cacheFile); break; case "gif": $res = imagegif($outImg, $cacheFile); break; case "jpeg": $res = imagejpeg($outImg, $cacheFile); break; default: diewith("unsupported file type '$uri'"); } //... ?> Hey guys i am currently working on a thumbnail script. The idea is to be able to resize any image on the fly by adding some parameters to the images url ex: thisimage.jpg~160x160 It's then picked up by an htaccess rule that sends it to a php script that resize the image and returns it using the GD library. The script is working great but got a problem keeping the transparency with PNG images ... What ever i do the resized image has a black background. I tryed all sorts of things but it's just not working ... can anybody help me understand where i got it wrong? // [......] // Create output image $outImg = imagecreate ($outWidth, $outHeight); // Load src image switch($srcType) { case "png": $srcImg = imagecreatefrompng($uri); $background = imagecolorallocate($srcImg, 255, 255, 255); imagecolortransparent($srcImg, $background); imagealphablending($srcImg, true); imagesavealpha($srcImg, true); break; case "gif": $srcImg = imagecreatefromgif($uri); break; case "jpeg": $srcImg = imagecreatefromjpeg($uri); break; default: diewith("unsupported file type '$uri'"); }; // Resize image imagecopyresampled($outImg, $srcImg, 0, 0, 0, 0, $outWidth, $outHeight, $srcWidth, $srcHeight); // [......] I have a transparency color set up with my GD script. It makes the image semi transparent with an ugly border. Any tips or Hints? Page: http://www.zeldadungeon.net/Justin/miniheros/test.php Code: [Select] <? $bg = imagecreatefrompng('http://i241.photobucket.com/albums/ff279/tiger_leo/reddraft.png'); $color = imagecolorallocate($bg, 168, 97, 97); $font = './BOOKOS.TTF'; $insert = imagecreatefrompng('http://i241.photobucket.com/albums/ff279/tiger_leo/heartdraft.png'); imagealphablending($insert, true); imagesavealpha($insert, true); $xOffset = 20; $yOffset = 20; imagecolortransparent($insert, $color); $insert_x = imagesx($insert); $insert_y = imagesy($insert); header('Content-Type: image/png'); imagecopymerge($bg,$insert,$xOffset,$yOffset,0,0,$insert_x,$insert_y,100); imagepng($bg); imagedestroy($bg); ?> I have the below code that outputs my image correctly expect it puts a black background in it, instead of keeping it transparent. I'm tried using imagealphablending and couldn't get it to work. What should I use to get it to work correctly and where should I put it. $src = imagecreatefrompng($target); echo $scr; list($width,$height)=getimagesize($target); $newwidth=54; // new width of image $newheight=54; $tmp=imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); $image1 = imagecreatefrompng('Surround.png'); imagecopymerge($image1, $tmp, 5, 5, 0, 0, 54, 54, 100); This is what my gd script output looks like, the black needs to be transparent I am having difficulty keeping transparency on my png resizing function. I have searched all around and tried various solutions. However, all I keep getting is a black background. Everything else about the function is working fine. Any help would be appreciated. Here is the code for transparency that isn't working: Code: [Select] $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h); imagealphablending($dst_img,false); imagesavealpha($dst_img,true); $transparent = imagecolorallocatealpha($dst_img, 255, 255, 255, 127); imagefilledrectangle($dst_img, 0, 0, $thumb_w, $thumb_h, $transparent); imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); Here is the full function code: Code: [Select] function createthumb($name,$filename,$new_w,$new_h) { $system=explode(".",$name); if (preg_match("/jpg|jpeg/",$system[1])) { $src_img=imagecreatefromjpeg($name); } if (preg_match("/png/",$system[1])) { $src_img=imagecreatefrompng($name); } $old_x=imageSX($src_img); $old_y=imageSY($src_img); if ($old_x > $old_y) { $thumb_w=$new_w; $thumb_h=$old_y*($new_h/$old_x); } if ($old_x < $old_y) { $thumb_w=$old_x*($new_w/$old_y); $thumb_h=$new_h; } if ($old_x == $old_y) { $thumb_w=$new_w; $thumb_h=$new_h; } $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h); imagealphablending($dst_img,false); imagesavealpha($dst_img,true); $transparent = imagecolorallocatealpha($dst_img, 255, 255, 255, 127); imagefilledrectangle($dst_img, 0, 0, $thumb_w, $thumb_h, $transparent); imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); if (preg_match("/png/",$system[1])) { imagepng($dst_img,$filename); } else { imagejpeg($dst_img,$filename); } imagedestroy($dst_img); imagedestroy($src_img); } So basically I have two lines that generate an image from png and then preserve the transparency of said png. Code: [Select] $bub1 = imagecreatefrompng ("Energy/$energy1b.png"); imageSaveAlpha($bub1, true);This works by itself when generating just this image. But when combined with another image: Code: [Select] imagecopymerge($image, $bub1, 680, 40, 0, 0, 50, 50, 100);It fills in the back ground around the image and the transparency is not preserved. Why is this and how can i fix it? I have tried many solution, but nothing seems to fix this. The problem is that i put an image with transparency on top of another image, but the transparent pixels still transparent, where they should show some of the image below it. If you call it with l=100 and p=20 i would get this result http://cl.ly/566Z instead of this http://cl.ly/56OF. Here is the source code and I have attached the images: Code: [Select] <?php header('Content-type: image/png'); echo imagepng(progressbar($_GET['l'], $_GET['p'])); function progressbar($length, $percentage) { $length = round($length / 2) * 2; $percentage = min(100, max(0, $percentage)); if($length > 0) { $bar = imagecreate($length, 14); imagealphablending($bar, false); imagesavealpha($bar, true); $empty = imagecreatefrompng('Empty.png'); imagealphablending($empty, false); imagesavealpha($empty, true); $fill = imagecreatefrompng('Fill.png'); imagealphablending($fill, false); imagesavealpha($fill, true); $lempty = imagecreatefrompng('LeftEmpty.png'); imagealphablending($lempty, false); imagesavealpha($lempty, true); $lfill = imagecreatefrompng('LeftFill.png'); imagealphablending($lfill, false); imagesavealpha($lfill, true); $rempty = imagecreatefrompng('RightEmpty.png'); imagealphablending($rempty, false); imagesavealpha($rempty, true); $rfill = imagecreatefrompng('RightFill.png'); imagealphablending($rfill, false); imagesavealpha($rfill, true); $emptycaplength = min(7, $length / 2); //5 imagecopy($bar, $lempty, 0, 0, 0, 0, $emptycaplength, 14); imagecopy($bar, $rempty, $length - $emptycaplength, 0, 7 - $emptycaplength, 0, $emptycaplength, 14); if($length > 14) { imagecopyresized($bar, $empty, 7, 0, 0, 0, $length - 14, 14, 1, 14); } $filllength = round(($length * ($percentage / 100)) / 2) * 2; $fillcaplength = min(7, $filllength / 2); imagecopy($bar, $lfill, 0, 0, 0, 0, $fillcaplength, 14); imagecopy($bar, $rfill, $filllength - $fillcaplength, 0, 7 - $fillcaplength, 0, $fillcaplength, 14); if($filllength > 14) { imagecopyresized($bar, $fill, 7, 0, 0, 0, $filllength - 14, 14, 1, 14); } imagealphablending($bar, true); return $bar; } else { return false; } } ?> I have the following code, works rotates the image. But it seems to lose its transparency and add color when rotated to say 45. How can I avoid this? // File and rotation $filename = 'placeholder.png'; $degrees = 45; // Content type header('Content-type: image/png'); // Load $source = imagecreatefrompng($filename); // Rotate $rotate = imagerotate($source, $degrees, 0); // Output imagepng($rotate); ?> Hey guys, im using UNIX time and trying to figure out how to remove the leading 0 when it shows the hour. "07:06 am" to make it read "7:06 am" manual says i need to use %i with strftime. So I guess Im suppose to be removing the zero before the date format? which is why strftime isnt working after the date function. Or is there a way to do this in the date function. $time = 1327493219; date_default_timezone_set('UTC'); $user_offset = date('h:i a M/d', $time); echo "<td>". strftime("%l",$user_offset) ."</td>"; Hi, May I know how can I remove all characters after the first 3 characters after . e.g : 123.512645124 I want to maintain 123.512 without rounding up. Please advise and thanks. I wanted to use strstr and trim functions but I am not able to use it to get what I want.. can some guru please assist .. thanks again Hi all, I am new to PHP and MySQL and I am expierencing an issue which i need help with. I am creating a pupil record system for an assignment in Uni. we have been given some sample code and we have to build onto this and finish the system. I have created an add a student page and when the student is added I want to move to the next page and then display the record that has been added (see image below) Also see code below Code: [Select] <?php print "<H2>Thank you, <i>"; print $_POST['firstname']; print " "; print $_POST[ 'surname']; print "</i> has been sucessfully added to the system.</H2>"; print "<a href=\"add_student.php\"><h4>Add Another Student</h4></a>"; function doquery($query) { $db = "prs"; $link = mysql_connect("localhost","..........","........") or die("Could not connect to server! Error: ".mysql_error()); mysql_select_db($db,$link) or die("Could not select $db! Error: ".mysql_error()); $result = mysql_query($query,$link) or $result = "Query Error!<p>Query: $query<p>Error: ".mysql_error(); mysql_close($link); return($result); } $firstname="'".$_POST['firstname']."'"; $surname="'".$_POST['surname']."'"; $address1="'".$_POST['address1']."'"; $address2="'".$_POST['address2']."'"; $town="'".$_POST['town']."'"; $county="'".$_POST['county']."'"; $postcode="'".$_POST['postcode']."'"; $phone="'".$_POST['phone']."'"; $email="'".$_POST['email']."'"; $class_set="'".$_POST['class_set']."'"; $query = "SELECT MAX(upn) + 1 as upn FROM students"; $result = doquery($query); $row = mysql_fetch_array($result); $upn = $row['upn']; $query = "INSERT INTO students (upn, firstname, surname, address1, address2, town, county, postcode, phone, email, class_set) VALUES ($upn, $firstname, $surname, $address1, $address2, $town, $county, $postcode, $phone, $email, $class_set)"; doquery($query); echo "<table width=\"350px\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\" bordercolor=\"#de5f57\" align=\"center\"> <tr> <td colspan=\"2\"><h3>Recorded Added</h3></td> </tr> <tr> <td width=\"150px\" class=\"form_labels\">Student Number</td> <td width=\"300px\" class=\"table_data\">".$upn."</td> </tr> <tr> <td class=\"form_labels\">First Name</td> <td class=\"table_data\">".$firstname."</td> </tr> <tr> <td class=\"form_labels\">Surname</td> <td class=\"table_data\">".$surname."</td> </tr> <tr> <td class=\"form_labels\">Address 1</td> <td class=\"table_data\">".$address1."</td> </tr> <tr> <td class=\"form_labels\">Address 2</td> <td class=\"table_data\">".$address2."</td> </tr> <tr> <td class=\"form_labels\">Town</td> <td class=\"table_data\">".$town."</td> </tr> <tr> <td class=\"form_labels\">County</td> <td class=\"table_data\">".$county."</td> </tr> <tr> <td class=\"form_labels\">Postcode</td> <td class=\"table_data\">".$postcode."</td> </tr> <tr> <td class=\"form_labels\">Phone Number</td> <td class=\"table_data\">".$phone."</td> </tr> <tr> <td class=\"form_labels\">Email</td> <td class=\"table_data\">".$email."</td> </tr> <tr> <td class=\"form_labels\">Class</td> <td class=\"table_data\">".$class_set."</td> </tr> </table>"; ?> What I want to do is simple: The string "this_is_an_example.php" should return "this_is_an_" while: "this_is_an_example_filename.php should return "this_is_an_example_" Is there a simple function which can cut off the part after the last _ ? I have been looking and trying several functions, but can't seem to find the right one for this. (the last _ being cut off of course wouldn't be a problem I couldn't live with :-) ) Any help will be greatly appreciated! Last question for the week now. Almost finished. All I need to do is: Remove characters from the beginning and the end of a string. Essentially: Code: [Select] a:4:{s:4:"full";s:111:"http://www.mothernatureinc.co.uk/wp-content/uploads/2011/02/166637_482678026567_509616567_6394964_6868412_n.jpg";i:96;s:117:"http://www.mothernatureinc.co.uk/wp-content/uploads/2011/02/166637_482678026567_509616567_6394964_6868412_n-96x96.jpg";i:60;s:117:"http://www.mothernatureinc.co.uk/wp-content/uploads/2011/02/166637_482678026567_509616567_6394964_6868412_n-60x60.jpg";i:32;s:117:"http://www.mothernatureinc.co.uk/wp-content/uploads/2011/02/166637_482678026567_509616567_6394964_6868412_n-32x32.jpg";} Needs to become Code: [Select] http://www.mothernatureinc.co.uk/wp-content/uploads/2011/02/166637_482678026567_509616567_6394964_6868412_n.jpg Any ideas? How can I remove certain string from a statement. For example: A blagh blah blah blah blah. http://blah.com Where I would want to remove everything from "http" and after. So the final statement would show as: A blagh blah blah blah blah. Hi I want this URL: php.net/manual/en/function.explode.php to become php.net using php .. I tried with the explode fuction but couldnt get it to work ... list ($finalurl, $blabla) = explode('/', $url); Anyone have any tips? Thanks in advance Hy guys I try to rebuild a PTC site The thing is when the member is click on the ad, they get money after x sec. I have the code, and the question is how i can remove the top frame, but i would like to keep the money part. So when they open a link its will looks a normal link no frame no timer but they still get the monye after x second. Can i do this?? The code is he <? session_start(); /********************************************************************************************************************************************** ScriptBux Version 2.50 beta This Script has been created and coded by Gabrola and edited by hassan ahmady. If you find any bugs in the script report at support@thealternatif.info or contact hassan ahmady. Copywrite ScriptBux 2008; Please make donations if you use this sript for commercial use to My paypal account "bisnis-usd@plasa.com" ************************************************************************************************************************************************/ require('config.php'); global $c; require('data.php'); global $config; require('funciones.php'); $adse=securedata($_GET["ad"]); if(isset($_GET['example'])) { die("<body bgcolor='#FFFFFF'></body>"); } if(!$_GET['ad']) { die("<b>Error</b> - You need the advertisement ID."); } if(!isset($_COOKIE["usNick"]) && !isset($_COOKIE["usPass"])) { $sqlz = "SELECT * FROM ads WHERE ad_id='$adse'"; $resultz = mysql_query($sqlz); $myrowz = mysql_fetch_array($resultz); if(!$loggedin) { $numero=$myrowz["outside"]; $sqlex = "UPDATE ads SET outside=outside +'1' WHERE ad_id='$adse'"; $resultex = mysql_query($sqlex); } } $checkad = mysql_query("SELECT * FROM ads WHERE ad_id='$adse'"); $ad_exist = mysql_num_rows($checkad); if ($ad_exist<1) { echo "You can only click an ad once every 24 hours."; exit(); } $ad = mysql_fetch_array($checkad); ?> <html> <head> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Expires" content="-1"> <title><?=$config["title"]?></title> <script> <?php if ($r["account"]=="premium") { ?> var x = <?=$config['pro_click'] + 1; ?>; <?php } else { ?> var x = <?=$config['free_click'] + 1; ?>; <?php } ?> var y = 1; function startClock() { if (x !== 'Done') { x = x-y; document.frm.clock.value = x; setTimeout("startClock()", 1000); } if (x == 0) { x = 'Done'; document.frm.clock.value = x; var code = "<?php if($loggedin==1) { $site_code = md5(time().sha1(microtime())); } else { $site_code = "Not Login"; } $_SESSION["adcode"] = $site_code; print($site_code); ?>"; var ad= "<?=$_GET['ad']?>"; success.location.href="success.php?ad="+ad+"&code="+code+"&verify=1"; } } </script> </head> <body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0" onLoad="startClock()"> <form name="frm"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody> <tr> <td class="maintopright" style=" background:url(images/adloading.gif) no-repeat 150px;border-bottom: 2px solid rgb(51, 51, 51); font-family: Verdana; font-size: 13px;" width="50%"> <div class="maintopright"> <img src="images/top_small.jpg" align="middle" /> <input name="clock" size="3" readonly="readonly" style="border: medium none ; padding: 0pt; font-size: 25pt; font-family: Verdana; vertical-align: top;" type="text"> <iframe name="success" src="view.php?example" border="0" framespacing="0" marginheight="0" marginwidth="0" vspace="0" hspace="0" style="vertical-align: top;" frameborder="0" height="48" scrolling="no" width="48"></iframe> </div> </td> <td style="border-bottom: 2px solid rgb(51, 51, 51); font-family: Verdana; font-size: 13px; " align="left" valign="middle" width="50%"> <strong>Please take the time to visit the sponsor below.<br> Show your website below for only <a href="index.php?option=advertise" target="_blank">$<?=$rowz1["price"]?></a> per 100 views!</strong> </td> </tr> </tbody> </table> <iframe src="<?=$ad["ad_url"]?>" border="0" framspacing="0" marginheight="0" marginwidth="0" vspace="0" hspace="0" frameborder="0" height="100%" scrolling="yes" width="100%"></iframe> </form> </body> </html> |