survey_seahorse

Software Engineering Project - Fall 2018
Log | Files | Refs | README

qrimage.php (3625B)


      1 <?php
      2 /*
      3  * PHP QR Code encoder
      4  *
      5  * Image output of code using GD2
      6  *
      7  * PHP QR Code is distributed under LGPL 3
      8  * Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
      9  *
     10  * This library is free software; you can redistribute it and/or
     11  * modify it under the terms of the GNU Lesser General Public
     12  * License as published by the Free Software Foundation; either
     13  * version 3 of the License, or any later version.
     14  *
     15  * This library is distributed in the hope that it will be useful,
     16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
     18  * Lesser General Public License for more details.
     19  *
     20  * You should have received a copy of the GNU Lesser General Public
     21  * License along with this library; if not, write to the Free Software
     22  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
     23  */
     24  
     25     define('QR_IMAGE', true);
     26 
     27     class QRimage {
     28     
     29         //----------------------------------------------------------------------
     30         public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) 
     31         {
     32             $image = self::image($frame, $pixelPerPoint, $outerFrame);
     33             
     34             if ($filename === false) {
     35                 Header("Content-type: image/png");
     36                 ImagePng($image);
     37             } else {
     38                 if($saveandprint===TRUE){
     39                     ImagePng($image, $filename);
     40                     header("Content-type: image/png");
     41                     ImagePng($image);
     42                 }else{
     43                     ImagePng($image, $filename);
     44                 }
     45             }
     46             
     47             ImageDestroy($image);
     48         }
     49     
     50         //----------------------------------------------------------------------
     51         public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85) 
     52         {
     53             $image = self::image($frame, $pixelPerPoint, $outerFrame);
     54             
     55             if ($filename === false) {
     56                 Header("Content-type: image/jpeg");
     57                 ImageJpeg($image, null, $q);
     58             } else {
     59                 ImageJpeg($image, $filename, $q);            
     60             }
     61             
     62             ImageDestroy($image);
     63         }
     64     
     65         //----------------------------------------------------------------------
     66         private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4) 
     67         {
     68             $h = count($frame);
     69             $w = strlen($frame[0]);
     70             
     71             $imgW = $w + 2*$outerFrame;
     72             $imgH = $h + 2*$outerFrame;
     73             
     74             $base_image =ImageCreate($imgW, $imgH);
     75             
     76             $col[0] = ImageColorAllocate($base_image,255,255,255);
     77             $col[1] = ImageColorAllocate($base_image,0,0,0);
     78 
     79             imagefill($base_image, 0, 0, $col[0]);
     80 
     81             for($y=0; $y<$h; $y++) {
     82                 for($x=0; $x<$w; $x++) {
     83                     if ($frame[$y][$x] == '1') {
     84                         ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); 
     85                     }
     86                 }
     87             }
     88             
     89             $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint);
     90             ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH);
     91             ImageDestroy($base_image);
     92             
     93             return $target_image;
     94         }
     95     }