ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 6911


Ignore:
Timestamp:
May 2, 2008, 3:43:07 AM (11 years ago)
Author:
ebihara
Message:

画像サイズに関わるメンバをOpenPNE_ImgからOpenPNE_Img_Generatorに移動

Location:
OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE/Img.php

    r6909 r6911  
    1414    var $height = 0;
    1515    var $filename = '';
    16 
    17     /**
    18      * 変換を許可する画像サイズ
    19      *
    20      * この配列にあるサイズの画像のみ出力できる。
    21      * 空の場合は無制限となる。
    22      *
    23      * @var array
    24      */
    25     var $allowed_size;
    2616
    2717    /**
     
    4333    function OpenPNE_Img($options = array())
    4434    {
    45         $this->allowed_size = (array)$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'];
    46         if (isset($options['allowed_size'])) {
    47             $this->allowed_size = $options['allowed_size'];
    48         }
    49 
    5035        $this->generator = new OpenPNE_Img_Generator($options);
    5136        $this->storage = new OpenPNE_Img_Storage($options);
     
    6853            $height = $vars['h'];
    6954        }
    70         $this->setSize($width, $height);
     55        $this->generator->setImageSize($width, $height);
    7156
    7257        if (!empty($vars['f'])) {
     
    7661        if (!empty($vars['filename'])) {
    7762            $this->setFilename($vars['filename']);
    78         }
    79     }
    80 
    81     /**
    82      * ファイルの高さ・幅をセット
    83      *
    84      * @param int $width
    85      * @param int $height
    86      */
    87     function setSize($width = 0, $height = 0)
    88     {
    89         if (is_numeric($width)) {
    90             $this->width = intval($width);
    91         }
    92 
    93         if (is_numeric($height)) {
    94             $this->height = intval($height);
    9563        }
    9664    }
     
    11987        }
    12088
    121         if (!$this->isAllowedSize($this->width, $this->height)) {
    122             return false;
    123         }
    124 
    125         $this->generator->setCacheFilename($this->filename, $this->width, $this->height);
     89        $this->generator->setCacheFilename($this->filename);
    12690        if ($this->generator->isCacheReadable()) {
    12791            return true;
    12892        }
     93
    12994        if (!$raw_img = $this->storage->getRawImage($this->filename)) {
    13095            return false;
    13196        }
    13297
    133         return $this->generator->createImage($raw_img, $this->width, $this->height, $this->format);
     98        return $this->generator->createImage($raw_img, $this->format);
    13499    }
    135100
     
    177142    }
    178143
    179     /**
    180      * 変換可能な画像サイズかどうか
    181      *
    182      * @param int $width
    183      * @param int $height
    184      * @return bool
    185      */
    186     function isAllowedSize($width = 0, $height = 0)
    187     {
    188         if (!$width && !$height) {
    189             return true;
    190         }
    191 
    192         $size = sprintf('%dx%d', $width, $height);
    193         if ($this->allowed_size && !in_array($size, $this->allowed_size)) {
    194             return false;
    195         }
    196 
    197         return true;
    198     }
    199144}
    200145
  • OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE/Img/Generator.php

    r6910 r6911  
    1414{
    1515    var $jpeg_quality = 75;
     16    var $width = 0;
     17    var $height = 0;
    1618
    1719    var $source_format;
     
    2123    var $cache_fullpath;
    2224
     25    /**
     26     * 変換を許可する画像サイズ
     27     *
     28     * この配列にあるサイズの画像のみ出力できる。
     29     * 空の場合は無制限となる。
     30     *
     31     * @var array
     32     */
     33    var $allowed_size;
     34
    2335    function OpenPNE_Img_Generator($options = array())
    2436    {
     37        $this->allowed_size = (array)$GLOBALS['_OPENPNE_IMG_ALLOWED_SIZE'];
     38        if (isset($options['allowed_size'])) {
     39            $this->allowed_size = $options['allowed_size'];
     40        }
     41
    2542        if (!empty($options['jpeg_quality'])) {
    2643            $this->jpeg_quality = $options['jpeg_quality'];
     
    3249    }
    3350
    34     function createImage($raw_img, $w, $h, $format)
    35     {
     51    function createImage($raw_img, $format)
     52    {
     53        $w = $this->width;
     54        $h = $this->height;
     55
     56        if (!$this->isAllowedSize($w, $h)) {
     57            return false;
     58        }
     59
    3660        // サイズ指定がなく、かつ、形式変換しない場合(GDに変換する必要なし)
    3761        if (!$w && !$h && ($this->getSourceFormat() == $this->getOutputFormat())) {
     
    204228    }
    205229
    206     function setCacheFileName($filename, $w, $h)
     230    function setCacheFileName($filename)
    207231    {
    208232        $pieces = explode('.', $filename);
     
    213237        $this->cache_fullpath =
    214238                 $this->cache_dir . '/' .
    215                  $this->getCachePath($filename, $w, $h, $f);
     239                 $this->getCachePath($filename, $this->width, $this->height, $f);
    216240    }
    217241
     
    225249    }
    226250
     251    /**
     252     * ファイルの高さ・幅をセット
     253     *
     254     * @param int $width
     255     * @param int $height
     256     */
     257    function setImageSize($width = 0, $height = 0)
     258    {
     259        if (is_numeric($width)) {
     260            $this->width = $width;
     261        }
     262
     263        if (is_numeric($height)) {
     264            $this->height = $height;
     265        }
     266    }
     267
    227268    function setSourceFormat($source_format)
    228269    {
     
    261302        return is_readable($this->cache_fullpath);
    262303    }
     304
     305    /**
     306     * 変換可能な画像サイズかどうか
     307     *
     308     * @param int $width
     309     * @param int $height
     310     * @return bool
     311     */
     312    function isAllowedSize($width = 0, $height = 0)
     313    {
     314        if (!$width && !$height) {
     315            return true;
     316        }
     317
     318        $size = sprintf('%dx%d', $width, $height);
     319        if ($this->allowed_size && !in_array($size, $this->allowed_size)) {
     320            return false;
     321        }
     322
     323        return true;
     324    }
    263325}
    264326
Note: See TracChangeset for help on using the changeset viewer.