If any of you have messed around with the google chart API you may or may not have come across an issue where the image returned from Google has no mime type.  Most browsers are smart enough to not care, but we would like our headers please where at all possible. So I made a QR action in my DownloadController:

public function qrAction()
   $target = $this->getRequest()->getParam('target');
   $saveas = $this->getRequest()->getParam('save');
   $dim = $this->getRequest()->getParam('dim');
   if(!isset($dim)){$dim = 200;}

   // disable view and layout 
   $url = 'https://chart.googleapis.com/chart?';
   $params = array(
   'chs'=> $dim.'x'.$dim,

   $url .= http_build_query($params);
   header ("Content-Type: image/png");
       header("Content-Disposition: attachment; filename=$saveas.png"); 
   $content = file_get_contents($url); 
   echo $content;

As you can see, there are a couple of parameters that are accepted. Target is your target URL, and is the only required argument. A thing to note. Usually in Zend, we would usually access this like so:


However as we are adding a url as a target the forward slashes mess this up, so we’ll use the old fashioned looking way of doing it:


This will give us our QR code with PNG headers as required 🙂 we can add dimensions to the url by adding:


This will return a larger QR image. Finally, we can pass a filename to the saveas argument:


which would bring up the save as dialog as nasa.png

Have Fun with your phone!