exhaler Posted May 15, 2010 Share Posted May 15, 2010 Hey all, i've been using this code for months now, thanks to Crayon Violent, i edited it to fit my needs http://www.phpfreaks.com/tutorial/php-add-text-to-image <?php // check if the string is a number or not function _empty($string) { $string = trim($string); if(!is_numeric($string)) { return empty($string); } return false; } // clean up the input if(_empty($_GET['text'])) { fatal_error('Error: No text specified.'); } $text = html_entity_decode($_GET['text']).' '; if(empty($text)) { fatal_error('Error: Text not properly formatted.'); } // customizable variables $font_file = 'arialbd.ttf'; $font_size = 10; // font size in pts $font_color = '#000000'; $image_file = '../images/redeem.png'; // x and y for the bottom right of the text // so it expands like right aligned text if ($text <= 9) { $x_finalpos = 34; } else if ($text >= 10 && $text <= 15) { $x_finalpos = 36; } else if ($text >= 16) { $x_finalpos = 37; } else { $x_finalpos = 36; } $y_finalpos = 38; // trust me for now...in PNG out PNG $mime_type = 'image/png'; $extension = '.png'; $s_end_buffer_size = 4096; // check for GD support if(!function_exists('ImageCreate')) fatal_error('Error: Server does not support PHP image generation'); // check font availability; if(!is_readable($font_file)) { fatal_error('Error: The server is missing the specified font.'); } // create and measure the text $font_rgb = hex_to_rgb($font_color); $box = @ImageTTFBBox($font_size,0,$font_file,$text); $text_width = abs($box[2]-$box[0]); $text_height = abs($box[5]-$box[3]); $image = imagecreatefrompng($image_file); if(!$image || !$box) { fatal_error('Error: The server could not create this image.'); } // allocate colors and measure final text position $font_color = ImageColorAllocate($image,$font_rgb['red'],$font_rgb['green'],$font_rgb['blue']); $image_width = imagesx($image); $put_text_x = $image_width - $text_width - ($image_width - $x_finalpos); $put_text_y = $y_finalpos; // Write the text imagettftext($image, $font_size, 0, $put_text_x, $put_text_y, $font_color, $font_file, $text); header('Content-type: ' . $mime_type); ImagePNG($image); ImageDestroy($image); exit; /* attempt to create an image containing the error message given. if this works, the image is sent to the browser. if not, an error is logged, and passed back to the browser as a 500 code instead. */ function fatal_error($message) { // send an image if(function_exists('ImageCreate')) { $width = ImageFontWidth(5) * strlen($message) + 10; $height = ImageFontHeight(5) + 10; if($image = ImageCreate($width,$height)) { $background = ImageColorAllocate($image,255,255,255); $text_color = ImageColorAllocate($image,0,0,0); ImageString($image,5,5,5,$message,$text_color); header('Content-type: image/png'); ImagePNG($image); ImageDestroy($image); exit; } } // send 500 code header("HTTP/1.0 500 Internal Server Error"); print($message); exit; } /* decode an HTML hex-code into an array of R,G, and B values. accepts these formats: (case insensitive) #ffffff, ffffff, #fff, fff */ function hex_to_rgb($hex) { // remove '#' if(substr($hex,0,1) == '#') $hex = substr($hex,1); // expand short form ('fff') color to long form ('ffffff') if(strlen($hex) == 3) { $hex = substr($hex,0,1) . substr($hex,0,1) . substr($hex,1,1) . substr($hex,1,1) . substr($hex,2,1) . substr($hex,2,1); } if(strlen($hex) != 6) fatal_error('Error: Invalid color "'.$hex.'"'); // convert from hexidecimal number systems $rgb['red'] = hexdec(substr($hex,0,2)); $rgb['green'] = hexdec(substr($hex,2,2)); $rgb['blue'] = hexdec(substr($hex,4,2)); return $rgb; } ?> anyways, i'm trying to add black text to this image (check attachment) but no luck.... i discovered that i need to trim the length of the image down in order for the font color to change to black i'm using this to get the image with the added text <img src="includes/redeem_image.php?text=190" width="357" height="146" alt="" title="Points" /> any ideas how to fix this without cutting the image?? thanks [attachment deleted by admin] Link to comment https://forums.phpfreaks.com/topic/201850-add-text-to-image/ Share on other sites More sharing options...
exhaler Posted May 15, 2010 Author Share Posted May 15, 2010 i've fixed it, turns out i needed to fill all the image cause there were some transparent background the attachment show the difference between the images [attachment deleted by admin] Link to comment https://forums.phpfreaks.com/topic/201850-add-text-to-image/#findComment-1058692 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.