Initial import: Carteasy Shop (Dev-Stand)
This commit is contained in:
@@ -0,0 +1,288 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* R&S Imagination Suite
|
||||
*
|
||||
* blah fasel description
|
||||
*
|
||||
* @author Darius A. Zylka <rs@regen-sonne.de>
|
||||
* @copyright (c) 2009 Darius A. Zylka
|
||||
* @version 1.0
|
||||
* @package phImaginator
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Main class
|
||||
*
|
||||
* @package phImaginator
|
||||
*
|
||||
*/
|
||||
class phImaginator {
|
||||
|
||||
const POSITION_LEFT = 1;
|
||||
const POSITION_CENTER = 2;
|
||||
const POSITION_RIGHT = 4;
|
||||
const POSITION_TOP = 8;
|
||||
const POSITION_MIDDLE = 16;
|
||||
const POSITION_BOTTOM = 32;
|
||||
|
||||
const POSITION_LEFT_TOP = 64;
|
||||
const POSITION_RIGHT_TOP = 128;
|
||||
const POSITION_LEFT_BOTTOM = 256;
|
||||
const POSITION_RIGHT_BOTTOM = 512;
|
||||
|
||||
const POSITION_ALL = 1024;
|
||||
|
||||
const FITTING_WIDTH = 2048;
|
||||
const FITTING_HEIGHT = 4096;
|
||||
const FITTING_BOTH = 8192;
|
||||
|
||||
const TRANSITION_LINEAR = 1;
|
||||
const TRANSITION_LOGARITHMIC = 2;
|
||||
const TRANSITION_EXPONENTIAL = 3;
|
||||
|
||||
/**
|
||||
* An array with all image data like resources, width, height, filename
|
||||
*
|
||||
* @access public
|
||||
* @var array
|
||||
*/
|
||||
public $imageSourceCollection = array();
|
||||
|
||||
/**
|
||||
* Incremental counter of all added images
|
||||
*
|
||||
* @access private
|
||||
* @var integer
|
||||
*/
|
||||
private $resource_counter = 0;
|
||||
|
||||
/**
|
||||
* Holds the additional file name for the generated images
|
||||
*
|
||||
* @access private
|
||||
* @var string
|
||||
*/
|
||||
private $nameAppend = false;
|
||||
private $namePrepend = false;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* Includes the module interface and the module parent class
|
||||
*
|
||||
*/
|
||||
public function __construct() {
|
||||
require_once 'phImaginator.Module.interface.php';
|
||||
require_once 'phImaginator.Universal.class.php';
|
||||
|
||||
//phImaginator_Universal::setGlobalConstants();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds new images resources
|
||||
*
|
||||
* @access public
|
||||
* @param mixed $source An array containing files or directories or a string with a file or directory name
|
||||
*/
|
||||
public function add($source) {
|
||||
if (is_array($source)) {
|
||||
foreach ($source as $source_file) {
|
||||
$this->addSource($source_file);
|
||||
}
|
||||
} else {
|
||||
$this->addSource($source);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if given resource is a file or a directory
|
||||
*
|
||||
* @access private
|
||||
* @param string $source A file or directory name
|
||||
*/
|
||||
private function addSource($source) {
|
||||
if (is_file($source)) {
|
||||
$this->addImage($source);
|
||||
} else if (is_dir($source) && $dh = opendir($source)) {
|
||||
$source .= (substr($source, -1, 1) != '/') ? '/' : '';
|
||||
|
||||
while (($file = readdir($dh)) !== false) {
|
||||
$sourcefile = $source . $file;
|
||||
|
||||
if (is_file($sourcefile)) {
|
||||
$this->addImage($sourcefile);
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an image resource and adds it to the collection
|
||||
*
|
||||
* @access private
|
||||
* @param string $source_file
|
||||
* @uses $imageSourceCollection
|
||||
*/
|
||||
private function addImage($source_file) {
|
||||
list($width, $height, $type) = getimagesize($source_file);
|
||||
|
||||
switch ($type) {
|
||||
case IMAGETYPE_JPEG:
|
||||
$resource = imagecreatefromjpeg($source_file);
|
||||
|
||||
break;
|
||||
|
||||
case IMAGETYPE_PNG:
|
||||
$resource = imagecreatefrompng($source_file);
|
||||
imagesavealpha($resource, true);
|
||||
|
||||
break;
|
||||
|
||||
case IMAGETYPE_GIF:
|
||||
$resource = imagecreatefromgif($source_file);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (isset($resource) && is_resource($resource)) {
|
||||
++$this->resource_counter;
|
||||
|
||||
$fileinfo = pathinfo($source_file);
|
||||
|
||||
$this->imageSourceCollection[$this->resource_counter] = array(
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'resource' => $resource,
|
||||
'id' => $this->resource_counter,
|
||||
'type' => $type,
|
||||
'fileinfo' => $fileinfo
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Includes the module class file and calls its desired method
|
||||
*
|
||||
* @access public
|
||||
* @param string $action Name of the class and its desired method
|
||||
* @param array $params Given parameters
|
||||
*/
|
||||
public function __call($action, $params) {
|
||||
$classCall = explode('_', $action);
|
||||
$class = $classCall[0];
|
||||
$method = $classCall[1];
|
||||
|
||||
if (!is_object($this->$class)) {
|
||||
require_once 'phImaginator.' . $class . '.class.php';
|
||||
$className = 'phImaginator_' . $class;
|
||||
}
|
||||
|
||||
if ($className::ifRunCollected()) {
|
||||
$className::assignImageSourceCollection($this->imageSourceCollection);
|
||||
$className::$method($params);
|
||||
} else {
|
||||
if (is_array($this->imageSourceCollection)) {
|
||||
foreach ($this->imageSourceCollection as $id => &$source_data) {
|
||||
// $className::$method($source_data, $params);
|
||||
// $tmp_params = $params;
|
||||
phImaginator_Universal::setCurrentResource($source_data);
|
||||
// array_unshift($params, &$source_data);
|
||||
call_user_func_array(array($className, $method), $params);
|
||||
|
||||
// $params = $tmp_params;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an additional name for the generated image files
|
||||
*
|
||||
* @access public
|
||||
* @param string $nameAdd Prefix for the new file name
|
||||
* @uses $nameAdd
|
||||
*/
|
||||
public function nameAdd($namePrepend = false, $nameAppend = false) {
|
||||
$this->nameAppend = $nameAppend;
|
||||
$this->namePrepend = $namePrepend;
|
||||
}
|
||||
|
||||
/**
|
||||
* Walks through the collection and calls the saving method for each element
|
||||
*
|
||||
* @access public
|
||||
* @param mixed $imagetype One of the Exif Imagetype Constants
|
||||
* @param integer $quality A value between 0 (high compression level, pure quality) and 100 (no compression, best possible quality)
|
||||
* @uses $imageSourceCollection
|
||||
*/
|
||||
public function save($imagetype = false, $quality = 85, $destination = false) {
|
||||
if (is_array($this->imageSourceCollection)) {
|
||||
foreach ($this->imageSourceCollection as $source_data) {
|
||||
$this->saveImage($source_data, $imagetype, $quality, $destination);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes the image to file system
|
||||
*
|
||||
* @access private
|
||||
* @param array $source_data
|
||||
* @param mixed $imagetype One of the Exif Imagetype Constants
|
||||
* @param quality $quality
|
||||
*/
|
||||
private function saveImage($source_data, $imagetype = false, $quality = 85, $destination = false) {
|
||||
$source_data['type'] = (!$imagetype) ? $source_data['type'] : $imagetype;
|
||||
|
||||
$destination = ($destination) ? $destination : $source_data['fileinfo']['dirname'];
|
||||
|
||||
switch ($source_data['type']) {
|
||||
|
||||
case IMAGETYPE_JPEG:
|
||||
imagejpeg($source_data['resource'], $destination . DIRECTORY_SEPARATOR . $this->namePrepend . $source_data['fileinfo']['filename'] . $this->nameAppend . '.jpg', $quality);
|
||||
|
||||
break;
|
||||
|
||||
case IMAGETYPE_PNG:
|
||||
imagealphablending($source_data['resource'], false);
|
||||
imagesavealpha($source_data['resource'], true);
|
||||
|
||||
$q = (-$quality + 100) * 0.1;
|
||||
$quality = floor(($q > 9) ? 9 : $q);
|
||||
|
||||
imagepng($source_data['resource'], $destination . DIRECTORY_SEPARATOR . $this->namePrepend . $source_data['fileinfo']['filename'] . $this->nameAppend . '.png', $quality);
|
||||
|
||||
break;
|
||||
|
||||
case IMAGETYPE_GIF:
|
||||
imagegif($source_data['resource'], $destination . DIRECTORY_SEPARATOR . $this->namePrepend . $source_data['fileinfo']['filename'] . $this->nameAppend . '.gif');
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the font informations for usage in modules
|
||||
*
|
||||
* @param string $fontFile Path and name to the TTF file
|
||||
* @param integer $size Font size
|
||||
* @param mixed $color An array or hex value for the color (array(R, G, B) or #RRGGBB)
|
||||
* @param integer $lucency An value between 0 and 100 for the lucency of the written text
|
||||
*/
|
||||
public function setFont($fontFile, $size = false, $color = false, $lucency = false) {
|
||||
phImaginator_Universal::setFont($fontFile, $size, $color, $lucency);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user