ZapMachine/lib/ImgProcess.class.php

92 lines
2.4 KiB
PHP
Raw Permalink Normal View History

<?php
/**
* ImgProcess
* Actual image manipulation
*/
class ImgProcess {
private $folder; //folder for reading source images and write
private $canvasName;
private $zapWidth;//collage dimensions
private $zapHeight;
private $maxRGB; //depends on colorDepth. 8 bits: 255; 16 bits : 65536;
/**
* constructor
* @param $imgFolder string
* @param $width int
* @param $height int
* @param $nr int
*/
public function __construct($imgFolder, $width, $height, $nr) {
$this->folder = $imgFolder;
$this->zapWidth = $width;
$this->zapHeight = $height;
$this->canvasName = DIRECTORY_SEPARATOR . ZAP_CANVAS_NAME;
$this->canvasName .= $_SESSION['date'] . "_nr_" . sprintf("%02d", $nr);
$tmpImg = new Imagick();
$tmpAr = $tmpImg->getQuantumRange();
$this->maxRGB = $tmpAr['quantumRangeLong'];
$tmpImg->destroy();
}
/**
* Makes a basic canvasFile from sourceImage
* and saves it into imageFolder
* returns imageBLOB from saved image
* @param string $sourceImgName
* @return void
*/
public function createBasicCanvas($sourceImgName) {
$canvas = new Imagick($sourceImgName);
$canvas = ImgTools::zoomCrop($canvas, $this->zapWidth, $this->zapHeight, TRUE);
ImgIOTools::saveImg($canvas, $this->folder, $this->canvasName);
if (ZAP_DELETE_SOURCE == true) {
unlink($sourceImgName);
}
ImgIOTools::onScreen($canvas);
}
/**
* adds processed version of $sourceImage to canvas
* @param string $sourceImgName
* @return void
*/
public function addToCanvas($sourceImgName) {
$canvasUri = $this->folder . $this->canvasName . '.' . ZAP_IMG_TYPE;
$canvas = new Imagick($canvasUri);
$source_im = new Imagick($sourceImgName);
$newCanvas_im = $this->zapToCanvas($source_im, $canvas);
ImgIOTools::saveImg($newCanvas_im, $this->folder, $this->canvasName);
if (ZAP_DELETE_SOURCE == true) {
unlink($sourceImgName);
}
ImgIOTools::onScreen($newCanvas_im);
}
/**
* @param Imagick $source_im
* @param Imagick $canvas
* @return Imagick Object
*/
private function zapToCanvas(Imagick $source_im, $canvas) {
//$val = ImgTools::imgCenterValueProm($source_im, $this->maxRGB);
//merge resized random transparised image on top of canvas
$transparent = ImgTools::transparantRandom($source_im, $this->maxRGB);
$resized = ImgTools::resize($transparent, $this->zapWidth, $this->zapHeight);
$canvas->compositeImage($resized, imagick::COMPOSITE_OVER, 0, 0);
return $canvas;
}
}
?>