Before building the noisy image application that I mentioned in the beginning of this article, I will list the complete signature corresponding to the image generator class that I created in the preceding article of the series. Doing so should give you a much better idea of how this class can be easily "plugged" to a string randomizer system to create a noisy image generation mechanism. All right, having said that, here's the full definition of the aforementioned image generator class, as it was originally built in the previous article of the series. Have a look at it, please: // define 'ImageGenerator' class class ImageGenerator{ private $width; private $height; private $bgColor; private $textColor; private $inputString; private $img; // initialize input arguments public function __construct($inputString='Default Input if(strlen($inputString>255)){ throw new Exception('Invalid length for input string.'); } if(!is_int($width)&&$width>800){ throw new Exception('Invalid width for image stream.'); } if(!is_int($width)&&$height>600){ throw new Exception('Invalid height for image stream.'); } if(!preg_match("/^d{1,3},d{1,3},d{1,3}$/",$bgColor)||!preg_match throw new Exception('Invalid format for background or text } $this->inputString=$inputString; $this->width=$width; $this->height=$height; $this->bgColor=explode(',',$bgColor); $this->textColor=explode(',',$textColor); $this->buildImageStream(); } // create image stream private function buildImageStream(){ if(!$this->img=imagecreate($this->width,$this->height)){ throw new Exception('Error creating image stream'); } // allocate background color on image stream imagecolorallocate($this->img,$this->bgColor[0],$this->bgColor // allocate text color on image stream $textColor=imagecolorallocate($this->img,$this->textColor $font=imageloadfont($this->font); if(!imagestring($this->img,$this->font,$this->width/2-strlen throw new Exception('Error creating image text'); } } // display image stream on the browser public function displayImage(){ header("Content-type: image/png"); // display image imagepng($this->img); // free up memory imagedestroy($this->img); } } As you can see, the logic that drives the above image generator class is very simple to follow. The class takes up a few input parameters, including the foreground and background colors of the image stream being generated, and the text string that will be embedded into the stream. These basic tasks are carried out by the two primary methods of the class, called "buildImageStream()" and "displayImage()" respectively. However, if you study in detail the signature of the previous class, you'll probably see that it seems pretty inflexible, since it actually builds the corresponding image stream whenever the class is instantiated. This prohibits the creation of other, different streams during the execution of given script. Therefore, in the section to come I'll introduce some important modifications to the original structure of the image generator class to solve this issue. I'll also build a simple text randomizer, which will be extremely useful for creating an efficient noisy image application. To see how all of these interesting tasks will be carried out, please jump forward and read the next few lines. They're just one click away.
blog comments powered by Disqus |
|
|
|
|
|
|
|