File Manager

Current Directory: /home/astoriaah/www/components/com_jce/editor/libraries/pro/classes/image/gd/filters
Viewing File: /home/astoriaah/www/components/com_jce/editor/libraries/pro/classes/image/gd/filters/sepia.php
<?php /** * @copyright Copyright (c) 2009-2017 Ryan Demmer. All rights reserved * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * * Based on JImage library from Joomla.Platform 11.3 */ defined('_JEXEC') or die; /** * Image Filter class adjust the smoothness of an image. */ class WFImageGDFilterSepia extends WFImageGDFilter { /** * Method to apply a filter to an image resource. * * @param array $options An array of options for the filter * * @throws InvalidArgumentException * @throws RuntimeException */ public function execute(array $options = array()) { // Verify that image filter support for PHP is available. if (!function_exists('imagefilter')) { throw new RuntimeException('The imagefilter function for PHP is not available.'); } if (empty($options)) { throw new InvalidArgumentException('No valid amount was given. Expected float.'); } $amount = (int) array_shift($options); // 39, 14, -36 /*if (imagefilter($this->handle, IMG_FILTER_GRAYSCALE)) { imagefilter($this->handle, IMG_FILTER_COLORIZE, 39, 14, -36); }*/ // Microsoft Sepia $width = imagesx($this->handle); $height = imagesy($this->handle); for ($x = 0; $x < $width; ++$x) { for ($y = 0; $y < $height; ++$y) { $index = imagecolorat($this->handle, $x, $y); $rgb = imagecolorsforindex($this->handle, $index); $r = $rgb['red']; $g = $rgb['green']; $b = $rgb['blue']; $a = $rgb['alpha']; $v1 = $r * 0.393 + $g * 0.769 + $b * 0.189; $v2 = $r * 0.349 + $g * 0.686 + $b * 0.168; $v3 = $r * 0.272 + $g * 0.534 + $b * 0.131; // clamp $v1 = min(255, max(0, $v1)); $v2 = min(255, max(0, $v2)); $v3 = min(255, max(0, $v3)); $color = imagecolorallocatealpha($this->handle, $v1, $v2, $v3, $a); if ($color === false) { $color = imagecolorclosestalpha($this->handle, $v1, $v2, $v3, $a); } imagesetpixel($this->handle, $x, $y, $color); } } } }