CodeIgniter Forums
render text as image - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forumdisplay.php?fid=23)
+--- Thread: render text as image (/showthread.php?tid=9024)



render text as image - El Forum - 06-09-2008

[eluser]stoefln[/eluser]
is there a convenient way to render text as image (antialiasing) in CI?
i found no helper/lib/whatever for this purpose...


render text as image - El Forum - 06-09-2008

[eluser]xwero[/eluser]
a quick google got me TextToImage function. Check the image library your are working with for more function.

It's best you cache the images instead of rendering it on every page request.


render text as image - El Forum - 06-09-2008

[eluser]stoefln[/eluser]
[quote author="xwero" date="1213037435"]a quick google got me TextToImage function. Check the image library your are working with for more function.

It's best you cache the images instead of rendering it on every page request.[/quote]

yeah caching is exactly the point. would be great if there would be a library for generating cached text-images out of a config array.
TYPO3 can do this out of the box, wondering.., its a feature which is quite often required IMO...


render text as image - El Forum - 06-09-2008

[eluser]xwero[/eluser]
Instead of caching you can create static images when you change or add the text. Caching is good but static is better.


render text as image - El Forum - 06-09-2008

[eluser]stoefln[/eluser]
[quote author="xwero" date="1213055373"]Instead of caching you can create static images when you change or add the text. Caching is good but static is better.[/quote]

where is the difference between caching and static images?


render text as image - El Forum - 06-09-2008

[eluser]xwero[/eluser]
Caching works with time intervals, most of the time, which renders the images without need. A static image created when the text is added or changed only changes when it's necessary.


render text as image - El Forum - 06-09-2008

[eluser]stoefln[/eluser]
[quote author="xwero" date="1213067802"]Caching works with time intervals, most of the time, which renders the images without need. A static image created when the text is added or changed only changes when it's necessary.[/quote]

i think i would need another caching algorithm in both cases: i think it should be able to check if there has been any change in one of the parameters (font, fontsize,..). cause i dont want to delete all files manually if i have to change a rendering-property.
so my aproach would be to create a checksum over the configuration array and use this checksum as filename...


render text as image - El Forum - 06-09-2008

[eluser]xwero[/eluser]
It looks like a well thought out approach


render text as image - El Forum - 06-24-2008

[eluser]stoefln[/eluser]
So, finally heres my text2image_helper.php, hope you like i:

Code:
<?php

/**
*    Text To Image Function
*
*    PHP versions 4 and 5
*
*    @author     Stephan Petzl <[email protected]>
*    @copyright  2005 &copy; Stephan Petzl
*    @license    non, just use the file as you like, but please dont throw this sentence away
*    @link       http://ra.synapsick.net
*/

/**
*    Text to image Function
*
*    Convert text to a image
*
*    @param string $text Text to be converted
*    @param string $configArray Optional configuration array allows you to set: 'background-color', 'color', 'font-size', 'font-file', 'params'
*    @param int $filepath Directory where generated images are stored
*    @return void
*/
function text2image($text,$configArray=array(),$filepath='public/images/generated')
{
    if(trim($text) == "")
        return "";
    $conf = array();
    $conf['background-color'] = isset($configArray['background-color']) ? $configArray['background-color'] : '#FFFFFF';
    $conf['color']            = isset($configArray['color'])            ? $configArray['color'] : '#404040';
    $conf['font-size']        = isset($configArray['font-size'])        ? $configArray['font-size'] : '19';
    $conf['font-file']        = isset($configArray['font-file'])        ? $configArray['font-file'] : APPPATH.'fonts/HelveticaNeue-Condensed.otf';
    $conf['params']           = isset($configArray['params'])           ? $configArray['params'] : '';
    
    // calculate a hash out of the configuration array-> image is only generated if its not found in the filepath
    $str = $text;
    foreach($conf as $key => $val){
        $str .= $key."=".$val;
    }
    $hash = md5($str);
    $imagepath = $filepath.'/'.$hash.'.gif';
    if(!file_exists($imagepath)){
        $data = imagettfbbox($conf['font-size'], 0, $conf['font-file'], $text);
        $x = 0 - $data[6];
        $y = 0 - $data[7]-$data[3];
        //print_r($data);
        
        $y *= 1.1;  //dunno why - but without this line the area will be a bit too small in hight
        //echo $y;
        $res = imagecreate($data[2]*1.05, 2*$data[3] + $y);
        $r = hexdec(substr($conf['background-color'],1,2));
        $g = hexdec(substr($conf['background-color'],3,2));
        $b = hexdec(substr($conf['background-color'],5,2));
        $backgroundcolor = imagecolorallocate($res,$r,$g, $b);
        $r = hexdec(substr($conf['color'],1,2));
        $g = hexdec(substr($conf['color'],3,2));
        $b = hexdec(substr($conf['color'],5,2));
        
        $textcolor = imagecolorallocate($res,$r, $g, $b);
        imagettftext($res, $conf['font-size'], 0, 0, $conf['font-size'], $textcolor, $conf['font-file'], $text);
        
        imagegif($res, $imagepath);
    }
    return '<img src="'.$imagepath.'" border="0" alt="'.$text.'" '.$conf['params'].'/>';
    
}
?&gt;



render text as image - El Forum - 06-24-2012

[eluser]Ajeesh[/eluser]
i used this code, but the generated image had 1024 width and height 15 and the enterd text showing in a single line. Then i gave breaks bt its not working.