Just a testscript to test the quality of Magento’s image processing:
<?php
/**
*
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* It is available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
*
* @category AskSheldon
* @package AskSheldon_FeaturedProducts
* @copyright Copyright (c) 2016 Marcel Lange (https://www.ask-sheldon.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @author Marcel Lange <info@ask-sheldon.com>
*
* Einfaches Testscript, um die quallität des Imageprocessings zu testen
*
* AskSheldon_SHELL_Imageprocessing
*
*
*/
require_once("abstract.php");
class AskSheldon_SHELL_Imageprocessing extends Mage_Shell_Abstract {
/**
* @param $imagePath
* @param $width
* @param $height
* @param bool $constrainOnly
* @param bool $keepAspectRatio
* @param bool $keepFrame
* @param array $bgColor
* @param int $quality
*
* Converts an image to jpg and copies it to target folder
*
*/
private function _convert($imagePath, $targetPath, $width, $height, $constrainOnly = true, $keepAspectRatio = true, $keepFrame = false, $bgColor = array(255, 255, 255), $quality = 80)
{
try {
if (!is_file($imagePath)) {
Mage::throwException($imagePath . ' does not exist!');
}
if (!is_array($bgColor)) {
Mage::throwException('Wrong Background-Color-Format given');
}
$targetImagePath = dirname($targetPath);
$this->log('New Image Foldername: ' . $targetImagePath);
if (!is_dir($targetImagePath)) {
if (!mkdir($targetImagePath, 0777)) {
Mage::throwException('Could not create damed folder: ' . $targetImagePath);
};
}
//now use Magentos nice scaling featueres.
$imageObj = new Varien_Image ($imagePath);
$imageObj->backgroundColor($bgColor);
$imageObj->constrainOnly($constrainOnly);
$imageObj->keepAspectRatio($keepAspectRatio);
$imageObj->keepFrame($keepFrame);
$imageObj->quality($quality);
$imageObj->resize($width, $height);
$imageObj->save($targetPath);
$this->log('New Image successfully build: ' . $targetPath);
$this->log('Imagemimetype: ' . $imageObj->getMimeType());
} catch (Exception $ex) {
$this->log('Imageconvertererror: ' . $imagePath);
$this->log('Imageconvertermessage:');
$this->log($ex->getMessage());
$this->log('Imageconvertertranestring:');
$this->log($ex->getTraceAsString());
throw $ex;
}
}
/**
* General log function for this nice module
* @param string $content if empty only the timestamp ist logged
*/
static function log($content = "")
{
Mage::log($content, null, __CLASS__ . '.log', true);
}
public function run()
{
ini_set('memory_limit','4096M');
ini_set('display_errors', '1');
echo "ARGS:\n";
print_r($this->_args);
echo "\n";
if(!$this->getArg('file')
|| !$this->getArg('target')
|| !$this->getArg('width')
|| !$this->getArg('height')
|| !$this->getArg('constrainOnly')
|| !$this->getArg('keepAspectRatio')
|| !$this->getArg('keepFrame')
|| !$this->getArg('quality')
){
echo $this->usageHelp()."\n";
exit -1;
}
$this->_convert(
$this->getArg('file'),
$this->getArg('target'),
$this->getArg('width'),
$this->getArg('height'),
$this->getArg('constrainOnly'),
$this->getArg('keepAspectRatio'),
$this->getArg('keepFrame'),
array(255, 255, 255),
$this->getArg('quality')
);
echo "Ready Master!!!\n";
}
/**
* Retrieve Usage Help Message
*
*/
public function usageHelp()
{
return <<<USAGE
Please make shure you now what you're doing guy!!!
Usage: php image_resize_test.php
-file pathToFileToProcess | path to file to process
-target pathToFileToProcess | path to file to process
-width |
-height |
-constrainOnly |
-keepAspectRatio |
-keepFrame |
-quality |
help | display this help
USAGE;
}
}
$shell = new AskSheldon_SHELL_Imageprocessing();
$shell->run();
