colorConverter = new CharColorConverter(); } /** * Processes the given file, returns the filename of the resulting PNG-File. * @param string $filename * @return void * @throws Exception */ public function convertFile($filename) { if(file_exists($filename) === FALSE) throw new Exception("Invalid filename given!"); //get file data $filesize = filesize($filename); $md5 = md5_file($filename); $new_filename = "result.png"; $header = ""; for($i = 0;$i < 255;$i += 5) { $header .= chr($i); } $header .= chr(0); $header .= $filesize; $header .= chr(0); $header .= $md5; //header done, now read the file content $content = file_get_contents($filename); //get size for the image $size = strlen($header) + 1 + $filesize; //create and prepare image $this->image = new BoxImage($size); $this->image->fillImage(0,0,0,127); //header first $this->addDataToImage($header); //magic pixel $this->image->setCurrentPixel(0,0,0,127); $this->image->movePointer(1); //content $this->addDataToImage($content); //save image $this->image->writeToFile($new_filename, 0); //clean up unset($this->image); } /** * Converts data and adds it to the image. * @param string $data * @return void */ protected function addDataToImage($data) { try { $strlen = strlen($data); for($i = 0;$i < $strlen; $i++) { $char = substr($data, $i, 1); //convert char to color list($r, $g, $b) = $this->colorConverter->charToColor($char); //set the pixel $this->image->setCurrentPixel($r, $g, $b, 0); //move the pointer $this->image->movePointer(1); } } catch (Exception $e) { //TODO: handle weird shit? echo "Caught Exception:\n"; echo $e; } } } ?>