1<?php
2
3/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5/**
6 * Image_Canvas
7 *
8 * Canvas class to handle JPEG format.
9 *
10 * PHP versions 4 and 5
11 *
12 * LICENSE: This library is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License as published by
14 * the Free Software Foundation; either version 2.1 of the License, or (at your
15 * option) any later version. This library is distributed in the hope that it
16 * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
17 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
18 * General Public License for more details. You should have received a copy of
19 * the GNU Lesser General Public License along with this library; if not, write
20 * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
21 * 02111-1307 USA
22 *
23 * @category   Images
24 * @package    Image_Canvas
25 * @author     Jesper Veggerby <pear.nosey@veggerby.dk>
26 * @copyright  Copyright (C) 2003, 2004 Jesper Veggerby Hansen
27 * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
28 * @version    CVS: $Id: JPG.php 287471 2009-08-18 23:12:01Z clockwerx $
29 * @link       http://pear.php.net/package/Image_Canvas
30 */
31
32/**
33 * Include file Image/Canvas/GD.php
34 */
35require_once 'Image/Canvas/GD.php';
36
37/**
38 * JPEG Canvas class.
39 *
40 * @category   Images
41 * @package    Image_Canvas
42 * @author     Jesper Veggerby <pear.nosey@veggerby.dk>
43 * @copyright  Copyright (C) 2003, 2004 Jesper Veggerby Hansen
44 * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
45 * @version    Release: @package_version@
46 * @link       http://pear.php.net/package/Image_Canvas
47 */
48class Image_Canvas_GD_JPG extends Image_Canvas_GD
49{
50
51    /**
52     * The JPEG quality
53     * @var int
54     * @access private
55     */
56    var $_quality = 75;
57
58    /**
59     * Create the JPEG canvas
60     *
61     * Additional parameters other than those available for common {@link
62     * Image_Graph_Canvas_GD} class are:
63     *
64     * 'quality' The JPEG quality in as a percentage value from 0 (lowest
65     * quality, smallest file) to 100 (highest quality, biggest file)
66     *
67     * @param array $param Parameter array
68     */
69    function Image_Canvas_GD_JPG($param)
70    {
71        parent::Image_Canvas_GD($param);
72
73        if (isset($param['quality'])) {
74            $this->_quality = max(0, min(100, $param['quality']));
75        }
76
77        $this->rectangle(
78                array(
79                    'x0' => $this->_left,
80                    'y0' => $this->_top,
81                    'x1' => $this->_left + $this->_width - 1,
82                    'y1' => $this->_top + $this->_height - 1,
83                    'fill' => 'white',
84                    'line' => 'transparent'
85                )
86            );
87    }
88
89    /**
90     * Output the result of the canvas
91     *
92     * @param array $param Parameter array
93     * @abstract
94     */
95    function show($param = false)
96    {
97        parent::show($param);
98        header('Content-type: image/jpg');
99        header('Content-Disposition: inline; filename = \"'. basename($_SERVER['PHP_SELF'], '.php') . '.jpg\"');
100        ImageJPEG($this->_canvas, '', $this->_quality);
101        ImageDestroy($this->_canvas);
102    }
103
104    /**
105     * Output the result of the canvas
106     *
107     * @param array $param Parameter array
108     * @abstract
109     */
110    function save($param = false)
111    {
112        parent::save($param);
113        ImageJPEG($this->_canvas, $param['filename'], $this->_quality);
114        ImageDestroy($this->_canvas);
115    }
116
117}
118
119?>
120