Web Analytics Made Easy -
StatCounter how to create multiple thumbnails from one image - CodingForum

Announcement

Collapse
No announcement yet.

how to create multiple thumbnails from one image

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • how to create multiple thumbnails from one image

    hi all

    this is my script which creates one thumbnail from uploaded image

    But now instead of one thumbnail

    i want to generate 3 different size thumbnails

    200x200
    500x500
    800x800

    how to generate them ??

    Code:
    <?php chmod('images/', 0777);
    require_once("functions.php");  
    require_once("path.php");  
    
    if(isset($_FILES['prod_image'])) 
    {           
    	if(preg_match('/[.](jpg)|(pjpeg)|(gif)|(png)$/', 
    
    $_FILES['prod_image']['name']))
    	{ 
    		$path=$_FILES['prod_image']['name'];
    	    $filename = $_FILES['prod_image']['name'];
            $source = $_FILES['prod_image']['tmp_name'];   
    		$target = $path_to_image_directory . $filename;   
            move_uploaded_file($source, $target);   
            createThumbnail($filename); 
    	}
    }  
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
    
    <body>
    <form action="" method="post" enctype="multipart/form-data" name="form1" 
    
    id="form1">
    <input name="prod_image" type="file" id="prod_image" size="60" /> <br /><br 
    
    />   
    <input type="submit" value="upload" name="submit" />
    </form>
    </body>
    </html>
    this is functions.php
    Code:
    <?
    function createThumbnail($filename) {   
           
       	require 'path.php';   
    	 
           
        if(preg_match('/[.](jpg)$/', $filename)) {   
            $im = imagecreatefromjpeg($path_to_image_directory . $filename);   
        } else if (preg_match('/[.](gif)$/', $filename)) {   
            $im = imagecreatefromgif($path_to_image_directory . $filename);   
        } else if (preg_match('/[.](png)$/', $filename)) {   
            $im = imagecreatefrompng($path_to_image_directory . $filename);   
        }   
           
        $ox = imagesx($im);   
        $oy = imagesy($im);   
           
        $nx = $final_width_of_image;   
        $ny = floor($oy * ($final_width_of_image / $ox));   
           
        $nm = imagecreatetruecolor($nx, $ny);   
           
    
    	imagecopyresampled($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);     
           
        if(!file_exists($path_to_thumbs_directory)) {   
          if(!mkdir($path_to_thumbs_directory)) {   
               die("There was a problem. Please try again!");   
          }    
           }   
      
        imagejpeg($nm, $path_to_thumbs_directory . $filename,70);   
    	
    	$tn = '<img src="' . $path_to_thumbs_directory . $filename . '" 
    
    alt="image" />';   
    $tn .= '<br />Congratulations. Your file has been successfully uploaded, and 
    
    a thumbnail has been created.'; 
    echo "<p align=center>". $tn  . "</p>";
    }  
    ?>
    this is path.php
    Code:
    <?
    $final_width_of_image = 200;   
    $path_to_image_directory = 'images/';   
    $path_to_thumbs_directory = 'images/thumbs/';  
    ?>

  • #2
    Use this class, call it three times and supply the sizes you want:

    PHP Code:
    <?php
    /*
    * File: SimpleImage.php
    * Author: Simon Jarvis
    * Copyright: 2006 Simon Jarvis
    * Date: 08/11/06
    * Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
    *
    * This program is free software; you can redistribute it and/or
    * modify it under the terms of the GNU General Public License
    * as published by the Free Software Foundation; either version 2
    * of the License, or (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details:
    * http://www.gnu.org/licenses/gpl.html
    *
    */

    class SimpleImage {

       var 
    $image;
       var 
    $image_type;

       function 
    load($filename) {
          
    $image_info getimagesize($filename);
          
    $this->image_type $image_info[2];
          if( 
    $this->image_type == IMAGETYPE_JPEG ) {
             
    $this->image imagecreatefromjpeg($filename);
          } elseif( 
    $this->image_type == IMAGETYPE_GIF ) {
             
    $this->image imagecreatefromgif($filename);
          } elseif( 
    $this->image_type == IMAGETYPE_PNG ) {
             
    $this->image imagecreatefrompng($filename);
          }
       }
       function 
    save($filename$image_type IMAGETYPE_JPEG$compression 100$permissions null)
          {
             switch (
    $image_type)
                {
                case 
    IMAGETYPE_JPEG:
                case 
    'image/jpeg':
                   
    imagejpeg($this->image$filename$compression);
                   break;
                case 
    IMAGETYPE_GIF:
                case 
    'image/gif':
                   
    imagegif($this->image$filename);
                   break;
                case 
    IMAGETYPE_BMP:
                case 
    'image/bmp':
                   
    imagewbmp($this->image$filename);
                   break;
                case 
    IMAGETYPE_PNG:
                case 
    'image/png':
                   
    imagepng($this->image$filename);
                   break;
                }
                
             if( 
    $permissions != null) {
                
    chmod($filename,$permissions);
             }
          }
       function 
    output($image_type=IMAGETYPE_JPEG)
          {
             switch (
    $image_type)
                {
                case 
    IMAGETYPE_JPEG:
                case 
    'image/jpeg':
                   
    imagejpeg($this->image);
                   break;
                case 
    IMAGETYPE_GIF:
                case 
    'image/gif':
                   
    imagegif($this->image);
                   break;
                case 
    IMAGETYPE_BMP:
                case 
    'image/bmp':
                   
    imagewbmp($this->image);
                   break;
                case 
    IMAGETYPE_PNG:
                case 
    'image/png':
                   
    imagepng($this->image);
                   break;
                }
          }
          
       function 
    getWidth() {
          return 
    imagesx($this->image);
       }
       function 
    getHeight() {
          return 
    imagesy($this->image);
       }
       function 
    resizeToHeight($height) {
          
    $ratio $height $this->getHeight();
          
    $width $this->getWidth() * $ratio;
          
    $this->resize($width,$height);
       }
       function 
    resizeToWidth($width) {
          
    $ratio $width $this->getWidth();
          
    $height $this->getheight() * $ratio;
          
    $this->resize($width,$height);
       }
       function 
    scale($scale) {
          
    $width $this->getWidth() * $scale/100;
          
    $height $this->getheight() * $scale/100;
          
    $this->resize($width,$height);
       }
       function 
    resize($width,$height) {
          
    $new_image imagecreatetruecolor($width$height);
          
    imagecopyresampled($new_image$this->image0000$width$height$this->getWidth(), $this->getHeight());
          
    $this->image $new_image;
       }
    }
    ?>
    "Tango says double quotes with a single ( ' ) quote in the middle"
    '$Name says single quotes with a double ( " ) quote in the middle'
    "Tango says double quotes ( \" ) must escape a double quote"
    '$Name single quotes ( \' ) must escape a single quote'

    Comment


    • #3
      @tango ...

      I've used that before but can't find it, or remember where I did it.

      How does it fit within the file upload part?
      I assume the resize happens before it saves, but don't remember where that gets inserted into the upload script.

      Thanks

      Comment


      • #4
        This is how I would normally do it:

        PHP Code:
        <?php
        $SI 
        = new SimpleImage();

        $SI->Load($FileName);

        //Then one of these functions:

        $SI->resizeToHeight(250);

        $SI->resizeToWidth(500);

        $SI->scale(75); //Percent

        $SI->resize(500250);

        $SI->save('some/where/image.jpg');
        ?>
        As for the upload part, simply move the file to somewhere as usual using move_uploaded_file() and then load it into the class by it's new path and name using the Load() method.

        If using it muitiple times there is no need to call the first line which creates a new instance, just call Load() again.
        Last edited by tangoforce; Sep 15, 2016, 07:43 PM.
        "Tango says double quotes with a single ( ' ) quote in the middle"
        '$Name says single quotes with a double ( " ) quote in the middle'
        "Tango says double quotes ( \" ) must escape a double quote"
        '$Name single quotes ( \' ) must escape a single quote'

        Comment


        • #5
          I was thinking that a person might upload a huge, hi-res image that is like 15MB in size. I thought we could resize it BEFORE saving it anywhere. So that huge photo coming from the form would need to be processed by the class before it gets saved. In the case you mentioned, it seems like that huge photo has to be saved first, then opened by the class, and resaved? Now that huge photo is in a directory somewhere and then would need to be "unlinked" to remove it (like a temporary file).

          Somewhere I used this: php://input

          And here is something about it (near the end of this post):
          Blog | InfoPotato

          But maybe I didn't do with a class. It drive me bonkers that I can't remember where I used that technique.


          EDIT: And apology to Vineet for hi-jacking his/her thread. But this will help you too. It will be the answer to "how" the 2 scripts come together.
          Last edited by mlseim; Sep 16, 2016, 09:41 AM.

          Comment


          • #6
            AFAIK all uploaded files are saved to disk anyway temporarily and it's standard procedure to then copy it to another location. With that said, you probably could just open the temp file as a stream and import it into a modified version of the class above. Perhaps adding a custom method called LoadStream which will take the filestream instead of opening a newly saved file..
            "Tango says double quotes with a single ( ' ) quote in the middle"
            '$Name says single quotes with a double ( " ) quote in the middle'
            "Tango says double quotes ( \" ) must escape a double quote"
            '$Name single quotes ( \' ) must escape a single quote'

            Comment


            • #7
              If I get a chance this weekend, I'll put the file upload with the class and try to get a working example for Vineet. I'll do the save, resize, save new sizes, and unlink the temp. Thanks

              Comment


              • #8
                Originally posted by mlseim View Post
                I was thinking that a person might upload a huge, hi-res image that is like 15MB in size.
                Unless you change the default settings for file uploads files bigger than 2Mb will not get uploaded at all.

                You can actually control how big a file can be uploaded to prevent huge files from being accepted.
                Stephen
                Learn Modern JavaScript - http://javascriptexample.net/
                Helping others to solve their computer problem at http://www.felgall.com/

                Don't forget to start your JavaScript code with "use strict"; which makes it easier to find errors in your code.

                Comment


                • #9
                  Below are 2 scripts ... the modified upload and resize script, and the SimpleImage Class that Tango showed (but it's a newer version).

                  It works good, but you'll have to modify it so it does what you want, for example, the filename structure, etc.

                  You should not chmod your directories to 0777. They should be chmodded correctly by your webhost when you create them.

                  I've never been real impressed by PHP GD resizing, I think ImageMagick is much better. So I sometimes use Perl instead of PHP for images. You have to also realize you are resizing non-square images? So unless your images are square, it will resize to the longest side.

                  Script 1
                  PHP Code:

                  <?php 

                  //chmod('images/', 0777); // you should not need to do this
                  //require_once("functions.php");  
                  //require_once("path.php");
                    
                  require_once('SimpleImage.php');

                  $path_to_image_directory "./images/";
                  if(isset(
                  $_FILES['prod_image'])) 
                  {           
                      if(
                  preg_match('/[.](jpg)|(pjpeg)|(gif)|(png)$/'$_FILES['prod_image']['name']))
                      { 
                          
                  $path=$_FILES['prod_image']['name'];
                          
                  $filename $_FILES['prod_image']['name'];
                          
                  $source $_FILES['prod_image']['tmp_name'];   
                          
                  $target $path_to_image_directory $filename;   
                          
                  move_uploaded_file($source$target);
                      
                              
                  $SI = new SimpleImage();
                              
                  $SI->Load($target);
                              
                              
                  // 200 X 200 pixel
                              
                  $SI->resizeToWidth(200);
                              
                  $SI->save($path_to_image_directory 't200_'.$filename);
                              
                              
                  // 500 X 500 pixel
                              
                  $SI->resizeToWidth(500);
                              
                  $SI->save($path_to_image_directory 't500_'.$filename);

                              
                  // 800 X 800 pixel
                              
                  $SI->resizeToWidth(800);
                              
                  $SI->save($path_to_image_directory 't800_'.$filename);

                                  
                  unlink($target); // remove the original image
                      
                      
                  }
                  }  

                  ?>

                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                  <html xmlns="http://www.w3.org/1999/xhtml">
                  <head>
                  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                  <title>Untitled Document</title>
                  </head>
                  <body>
                  <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
                  <input name="prod_image" type="file" id="prod_image" size="60" /> <br /><br/>   
                  <input type="submit" value="upload" name="submit" />
                  </form>
                  </body>
                  </html>

                  The SimpleImage Class file:
                  PHP Code:

                   <?php
                  /**
                   * File: SimpleImage.php
                   * Author: Simon Jarvis
                   * Modified by: Miguel Fermيn
                   * Based in: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
                   * 
                   * This program is free software; you can redistribute it and/or 
                   * modify it under the terms of the GNU General Public License 
                   * as published by the Free Software Foundation; either version 2 
                   * of the License, or (at your option) any later version.
                   * 
                   * This program is distributed in the hope that it will be useful, 
                   * but WITHOUT ANY WARRANTY; without even the implied warranty of 
                   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
                   * GNU General Public License for more details: 
                   * http://www.gnu.org/licenses/gpl.html
                   */

                  class SimpleImage {
                     
                      public 
                  $image;
                      public 
                  $image_type;

                      public function 
                  __construct($filename null){
                          if (!empty(
                  $filename)) {
                              
                  $this->load($filename);
                          }
                      }

                      public function 
                  load($filename) {
                          
                  $image_info getimagesize($filename);
                          
                  $this->image_type $image_info[2];

                          if (
                  $this->image_type == IMAGETYPE_JPEG) {
                              
                  $this->image imagecreatefromjpeg($filename);
                          } elseif (
                  $this->image_type == IMAGETYPE_GIF) {
                              
                  $this->image imagecreatefromgif($filename);
                          } elseif (
                  $this->image_type == IMAGETYPE_PNG) {
                              
                  $this->image imagecreatefrompng($filename);
                          } else {
                              throw new 
                  Exception("The file you're trying to open is not supported");
                          }
                      }

                      public function 
                  save($filename$image_type IMAGETYPE_JPEG$compression 100$permissions null) {
                          if (
                  $image_type == IMAGETYPE_JPEG) {
                              
                  imagejpeg($this->image,$filename,$compression);
                          } elseif (
                  $image_type == IMAGETYPE_GIF) {
                              
                  imagegif($this->image,$filename);         
                          } elseif (
                  $image_type == IMAGETYPE_PNG) {
                              
                  imagepng($this->image,$filename);
                          }

                          if (
                  $permissions != null) {
                              
                  chmod($filename,$permissions);
                          }
                      }

                      public function 
                  output($image_type=IMAGETYPE_JPEG$quality 80) {
                          if (
                  $image_type == IMAGETYPE_JPEG) {
                              
                  header("Content-type: image/jpeg");
                              
                  imagejpeg($this->imagenull$quality);
                          } elseif (
                  $image_type == IMAGETYPE_GIF) {
                              
                  header("Content-type: image/gif");
                              
                  imagegif($this->image);         
                          } elseif (
                  $image_type == IMAGETYPE_PNG) {
                              
                  header("Content-type: image/png");
                              
                  imagepng($this->image);
                          }
                      }

                      public function 
                  getWidth() {
                          return 
                  imagesx($this->image);
                      }

                      public function 
                  getHeight() {
                          return 
                  imagesy($this->image);
                      }

                      public function 
                  resizeToHeight($height) {
                          
                  $ratio $height $this->getHeight();
                          
                  $width round($this->getWidth() * $ratio);
                          
                  $this->resize($width,$height);
                      }

                      public function 
                  resizeToWidth($width) {
                          
                  $ratio $width $this->getWidth();
                          
                  $height round($this->getHeight() * $ratio);
                          
                  $this->resize($width,$height);
                      }

                      public function 
                  square($size) {
                          
                  $new_image imagecreatetruecolor($size$size);

                          if (
                  $this->getWidth() > $this->getHeight()) {
                              
                  $this->resizeToHeight($size);
                              
                              
                  imagecolortransparent($new_imageimagecolorallocate($new_image000));
                              
                  imagealphablending($new_imagefalse);
                              
                  imagesavealpha($new_imagetrue);
                              
                  imagecopy($new_image$this->image00, ($this->getWidth() - $size) / 20$size$size);

                          } else {
                              
                  $this->resizeToWidth($size);
                              
                              
                  imagecolortransparent($new_imageimagecolorallocate($new_image000));
                              
                  imagealphablending($new_imagefalse);
                              
                  imagesavealpha($new_imagetrue);
                              
                  imagecopy($new_image$this->image000, ($this->getHeight() - $size) / 2$size$size);

                          }

                          
                  $this->image $new_image;
                      }
                     
                      public function 
                  scale($scale) {
                          
                  $width $this->getWidth() * $scale/100;
                          
                  $height $this->getHeight() * $scale/100
                          
                  $this->resize($width,$height);
                      }
                     
                      public function 
                  resize($width,$height) {
                          
                  $new_image imagecreatetruecolor($width$height);
                          
                          
                  imagecolortransparent($new_imageimagecolorallocate($new_image000));
                          
                  imagealphablending($new_imagefalse);
                          
                  imagesavealpha($new_imagetrue);
                          
                          
                  imagecopyresampled($new_image$this->image0000$width$height$this->getWidth(), $this->getHeight());
                          
                  $this->image $new_image;   
                      }

                      public function 
                  cut($x$y$width$height) {
                          
                  $new_image imagecreatetruecolor($width$height);    

                          
                  imagecolortransparent($new_imageimagecolorallocate($new_image000));
                          
                  imagealphablending($new_imagefalse);
                          
                  imagesavealpha($new_imagetrue);

                          
                  imagecopy($new_image$this->image00$x$y$width$height);

                          
                  $this->image $new_image;
                      }

                      public function 
                  maxarea($width$height null)    {
                          
                  $height $height $height $width;
                          
                          if (
                  $this->getWidth() > $width) {
                              
                  $this->resizeToWidth($width);
                          }
                          if (
                  $this->getHeight() > $height) {
                              
                  $this->resizeToheight($height);
                          }
                      }
                      
                      public function 
                  minarea($width$height null)    {
                          
                  $height $height $height $width;
                          
                          if (
                  $this->getWidth() < $width) {
                              
                  $this->resizeToWidth($width);
                          }
                          if (
                  $this->getHeight() < $height) {
                              
                  $this->resizeToheight($height);
                          }
                      }

                      public function 
                  cutFromCenter($width$height) {
                          
                          if (
                  $width $this->getWidth() && $width $height) {
                              
                  $this->resizeToWidth($width);
                          }
                          if (
                  $height $this->getHeight() && $width $height) {
                              
                  $this->resizeToHeight($height);
                          }
                          
                          
                  $x = ($this->getWidth() / 2) - ($width 2);
                          
                  $y = ($this->getHeight() / 2) - ($height 2);
                          
                          return 
                  $this->cut($x$y$width$height);
                      }

                      public function 
                  maxareafill($width$height$red 0$green 0$blue 0) {
                          
                  $this->maxarea($width$height);
                          
                  $new_image imagecreatetruecolor($width$height); 
                          
                  $color_fill imagecolorallocate($new_image$red$green$blue);
                          
                  imagefill($new_image00$color_fill);        
                          
                  imagecopyresampled(    $new_image
                                              
                  $this->image
                                              
                  floor(($width $this->getWidth())/2), 
                                              
                  floor(($height-$this->getHeight())/2), 
                                              
                  00
                                              
                  $this->getWidth(), 
                                              
                  $this->getHeight(), 
                                              
                  $this->getWidth(), 
                                              
                  $this->getHeight()
                                          ); 
                          
                  $this->image $new_image;
                      }

                  }


                  // Usage Example

                  // Load the original image
                  //$image = new SimpleImage('lemon.jpg');

                  // Resize the image to 600px width and the proportional height
                  //$image->resizeToWidth(600);
                  //$image->save('lemon_resized.jpg');

                  // Create a squared version of the image
                  //$image->square(200);
                  //$image->save('lemon_squared.jpg');

                  // Scales the image to 75%
                  //$image->scale(75);
                  //$image->save('lemon_scaled.jpg');

                  // Resize the image to specific width and height
                  //$image->resize(80,60);
                  //$image->save('lemon_resized2.jpg');

                  // Resize the canvas and fill the empty space with a color of your choice
                  //$image->maxareafill(600,400, 32, 39, 240);
                  //$image->save('lemon_filled.jpg');

                  // Output the image to the browser:
                  //$image->output();
                  Last edited by mlseim; Sep 17, 2016, 02:11 PM.

                  Comment


                  • #10
                    You guys should move this to the PHP Scripts section so it can be added to!
                    Also you should include the jpeg orientation function so that all jpeg images are right side up before resizing. or at least make right side up optional in case there are those that want sideways images...hehehe
                    Here's the code I use...found it online sometime ago
                    Code:
                    <?php
                    /*-------------------------------------------------
                    FileName:    autocorrect_orientation.php
                    FileVersion: 1.0
                    FileCreated: 2013.06.13
                    FileUpdated: 2013.06.13
                    FileType:    Imaging Option
                    FilePurpose: Cellphone upload corrections
                    FileDescription:
                    Following functions should auto detect image orientation and reorient
                    for display on site.
                    ---------------------------------------------------*/
                    
                    function _mirrorImage ( $imgsrc)
                    {
                        $width = imagesx ( $imgsrc );
                        $height = imagesy ( $imgsrc );
                    
                        $src_x = $width -1;
                        $src_y = 0;
                        $src_width = -$width;
                        $src_height = $height;
                    
                        $imgdest = imagecreatetruecolor ( $width, $height );
                    
                        if ( imagecopyresampled ( $imgdest, $imgsrc, 0, 0, $src_x, $src_y, $width, $height, $src_width, $src_height ) )
                        {
                            return $imgdest;
                        }
                    
                        return $imgsrc;
                    }
                    
                    function autocorrect_orientation($full_filename){      
                        $exif = exif_read_data($full_filename);
                        if($exif && isset($exif['Orientation'])) {
                            $orientation = $exif['Orientation'];
                            if($orientation != 1){
                                $img = imagecreatefromjpeg($full_filename);
                    
                                $mirror = false;
                                $deg    = 0;
                    
                                switch ($orientation) {
                                  case 2:
                                    $mirror = true;
                                    break;
                                  case 3:
                                    $deg = 180;
                                    break;
                                  case 4:
                                    $deg = 180;
                                    $mirror = true;  
                                    break;
                                  case 5:
                                    $deg = 270;
                                    $mirror = true; 
                                    break;
                                  case 6:
                                    $deg = 270;
                                    break;
                                  case 7:
                                    $deg = 90;
                                    $mirror = true; 
                                    break;
                                  case 8:
                                    $deg = 90;
                                    break;
                                }
                                if ($deg) $img = imagerotate($img, $deg, 0); 
                                if ($mirror) $img = _mirrorImage($img);
                                $full_filename = str_replace('.jpg', "-O$orientation.jpg",  $full_filename); 
                                imagejpeg($img, $full_filename, 95);
                            }
                        }
                        return $full_filename;
                    }
                    ?>
                    you may have to modify the following line above to use the same file name...
                    Code:
                    $full_filename = str_replace('.jpg', "-O$orientation.jpg",  $full_filename);
                    I would like to see this go further!
                    Last edited by c1lonewolf; Sep 18, 2016, 03:44 PM.
                    NO Limits!!
                    ------------------------------------------------------------

                    Comment


                    • #11
                      Also you could add resize identifiers for batch processing directories...I add them myself but I know nothing about building php classes.

                      This is a cool class...
                      Currently I process through the orientation function then I have a mark and reduce function that adds text or image watermark then resizes. This would be so much easier!
                      NO Limits!!
                      ------------------------------------------------------------

                      Comment


                      • #12
                        So who's supplying the ANPR code?
                        "Tango says double quotes with a single ( ' ) quote in the middle"
                        '$Name says single quotes with a double ( " ) quote in the middle'
                        "Tango says double quotes ( \" ) must escape a double quote"
                        '$Name single quotes ( \' ) must escape a single quote'

                        Comment


                        • #13
                          What's a ANPR code?
                          NO Limits!!
                          ------------------------------------------------------------

                          Comment


                          • #14
                            Automatic Number Plate Recognit...

                            Google would have saved you time.
                            "Tango says double quotes with a single ( ' ) quote in the middle"
                            '$Name says single quotes with a double ( " ) quote in the middle'
                            "Tango says double quotes ( \" ) must escape a double quote"
                            '$Name single quotes ( \' ) must escape a single quote'

                            Comment

                            Working...
                            X