Вход Регистрация
Файл: upload/include/library/phpfox/image/abstract.class.php
Строк: 141
<?php
/**
 * [PHPFOX_HEADER]
 */

defined('PHPFOX') or exit('NO DICE!');

Phpfox::getLibClass('phpfox.image.interface');

/**
 * Abstract Layer for Image Libraries
 * Common methods that can be used on all the image libraries are packed into this class.
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author            Raymond Benc
 * @package         Phpfox
 * @version         $Id: abstract.class.php 1666 2010-07-07 08:17:00Z Raymond_Benc $
 * @abstract 
 */
abstract class Phpfox_Image_Abstract implements Phpfox_Image_Interface
{
    
/**
     * Holds an ARRAY of meta information about an image
     *
     * @var arrat
     */
    
protected $_aInfo = array();
    
    
/**
     * Supported file types
     *
     * @var array
     */
    
protected $_aTypes = array('''gif''jpg''png');    
    
    
/**
     * Class constructor
     *
     */
    
public function __construct()
    {        
    }
    
    
/**
     * Verification to check if an image is well an image when it is first being uploaded
     *
     * @param string $sPath Full path to where the image is located
     * @return bool TRUE if it is an image and FALSE if it isn't
     */
    
public function isImage($sPath)
    {
        if ((
$aInfo = @getImageSize($sPath)) && isset($this->_aTypes[$aInfo[2]]))
        {                        
            return 
true;
        }
        
        return 
false;
    }    
    
    
/**
     * Check to make sure the image being uploaded is a valid image extension that we support
     *
     * @param string $sExt File extension
     * @return bool TRUE is a valid file extension, FALSE if it isn't
     */
    
public function isImageExtension($sExt)
    {
        foreach (
$this->_aTypes as $sType)
        {
            if (empty(
$sType))
            {
                continue;
            }
            
            if (
$sType == strtolower($sExt))
            {
                return 
true;
            }
        }
        
        return 
false;
    }
    
    
/**
     * Load an image and attempt to get as much meta information about the image
     *
     * @param string $sPath Full path to where the image is located
     * @return bool TRUE on success, FALSE on failure
     */
    
protected function _load($sPath)
    {                
        if (
Phpfox::getParam(array('balancer''enabled')) && !file_exists($sPath))
        {
            
preg_match('/(.*)/(.*)-(.*)-(.*)_(.*?)/i'$sPath$aLbMatches);
            
$aServers Phpfox::getParam(array('balancer''servers'));
            foreach (
$aServers as $iIp => $aServer)
            {
                if (
$aServer['id'] == $aLbMatches[4])
                {
                    
$sPath str_replace(PHPFOX_DIR$aServer['url'], $sPath);
                    
                    break;
                }                
            }        
        }
        
        
$this->sPath $sPath;
        
        if (
$this->_aInfo = @getImageSize($sPath))
        {            
            if (!isset(
$this->_aTypes[$this->_aInfo[2]]))
            {
                return 
false;
            }
            
            
$this->nW $this->_aInfo[0];
            
$this->nH $this->_aInfo[1];
            
$this->sType $this->_aTypes[$this->_aInfo[2]];
            
$this->sMimeType $this->_aInfo['mime'];
            
            return 
true;
        }
        
        return 
false;
    }
    
    
/**
     * Destory all the variables associated with the current image in preperation to manipulate another image.
     *
     */
    
protected function _destroy()
    {
        
$this->sPath null;
        
$this->_aInfo = array();
        
$this->nW null;
        
$this->nH null;
        
$this->sType null;
        
$this->sMimeType null;
    }
    
    
/**
     * Transform a HEX to RGB
     *
     * @param string $sHex HEX string
     * @return array ARRAY of an RGB array(red, blue, green)
     */
    
protected function _hex2rgb($sHex)
    {
        
$iRed substr($sHex02);
        
$iGreen substr($sHex22);
        
$iBlue substr($sHex42);
        
$iRed hexdec($iRed);
        
$iGreen hexdec($iGreen);
        
$iBlue hexdec($iBlue);
        
        return array(
$iRed$iBlue$iGreen);
    }    
        
    
/** 
     * Calculates size for resizing.
     * 
     * @param int $nMaxW  maximum width
     * @param int $nMaxH  maximum height
     * @return array new size (width, height)
     */
    
protected function _calcSize($nMaxW$nMaxH)
    {
        
$w  $nMaxW;
        
$h  $nMaxH;

        if (
$this->nW $nMaxW)
        {
            
$w  $nMaxW;
            
$h  floor($this->nH $nMaxW/$this->nW);
            if (
$h $nMaxH)
            {
              
$h  $nMaxH;
              
$w  floor($this->nW $nMaxH/$this->nH);
            }
        }
        elseif (
$this->nH $nMaxH)
        {
            
$h  $nMaxH;
            
$w  floor($this->nW $nMaxH/$this->nH);
        }

        return array(
$w$h);
    } 
}

?>
Онлайн: 2
Реклама