From e958542706bddfceb81a6b99524289ad3b2568ae Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sat, 27 Apr 2013 15:31:34 +0300 Subject: [PATCH] image processor --- .gitignore | 1 + ipf/image/processor.php | 43 ++++++++++++++++++++++ t/ImageProcessorTest.php | 35 ++++++++++++++++++ t/project/htdocs/media/upload/ipflogo.gif | Bin 0 -> 990 bytes 4 files changed, 79 insertions(+) create mode 100644 ipf/image/processor.php create mode 100644 t/ImageProcessorTest.php create mode 100644 t/project/htdocs/media/upload/ipflogo.gif diff --git a/.gitignore b/.gitignore index e5fa1cf..8fc2f03 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /vendor /composer.phar +/t/project/htdocs/media/upload/thumbs diff --git a/ipf/image/processor.php b/ipf/image/processor.php new file mode 100644 index 0000000..37d3c8f --- /dev/null +++ b/ipf/image/processor.php @@ -0,0 +1,43 @@ +calls[] = array($name, $args); + return $this; + } + + private function play($image) + { + foreach ($this->calls as $call) { + list($method, $args) = $call; + $image = call_user_func_array(array($image, $method), $args); + } + return $image; + } + + public function execute($sourceUrl, $directory, $root=null) + { + if ($root === null) + $root = IPF::get('upload_path') . DIRECTORY_SEPARATOR; + + $destinationUrl = IPF_Utils::insertDirectory($sourceUrl, $directory); + $path = $root . $destinationUrl; + if (!is_file($path)) { + IPF_Utils::makeDirectories(dirname($path)); + $image = IPF_Image::load($root . $sourceUrl); + $image = $this->play($image); + $image->save($path); + } + return $destinationUrl; + } +} + diff --git a/t/ImageProcessorTest.php b/t/ImageProcessorTest.php new file mode 100644 index 0000000..d364db2 --- /dev/null +++ b/t/ImageProcessorTest.php @@ -0,0 +1,35 @@ +root = IPF::get('upload_path'); + IPF_Utils::removeDirectories($this->root . '/thumbs'); + } + + protected function tearDown() + { + IPF_Utils::removeDirectories($this->root . '/thumbs'); + } + + public function testRecording() + { + $url = IPF_Image_Processor::create() + ->thumbnailCrop(250, 125, 0.2, 0.2) + ->fit(200, 200) + ->execute('ipflogo.gif', 'thumbs'); + $this->assertEquals('thumbs/ipflogo.gif', $url); + $this->assertFileExists($this->root . '/thumbs/ipflogo.gif'); + } + + public function testBackground() + { + $url = IPF_Image_Processor::create() + ->thumbnailFill(250, 125, 0x0F0000FF) + ->execute('ipflogo.gif', 'thumbs'); + $this->assertEquals('thumbs/ipflogo.gif', $url); + $this->assertFileExists($this->root . '/thumbs/ipflogo.gif'); + } +} + diff --git a/t/project/htdocs/media/upload/ipflogo.gif b/t/project/htdocs/media/upload/ipflogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..b06c9bdff76496862993370fedf4832b7a91dd5a GIT binary patch literal 990 zcmV<410noJNk%w1VVeLl0K@Fv!TrzrVlQ+S>8)@t&TZtgNhASy@a> zOlN0ju#hB47&Jp6(0Ef&PJ2qd3TT+h zUW5Slj&@bMz~P9f;p%y1OX7jrdw|0aMMS40Go3m7jT z(IBu+wS!M;qGW-x&PvVp_MK>^@3pjSa81Fr=fMSwZNfB^^$ z42XPODvPkWLYG_dIk$mx0swt>@YFB5%_HV2xLcVxI;;RB*y9HvIC#}xXA++7A~lK6 zc14H>@R{d`;OI?75-oVag-(9DF$94B0VGLq!e=JYXCG?dpa9{0UtLHZI?myhAcp`j z7FbCd!Y5M<&;cUdJk-S}RE92!;NgbC$ynKlFrH|lVDgDp;R+Kv#$$N)Y*u1>_T-ix zNp|6d<6;83^I~AVJ;Y)S6Hn&WTuzKN#{u^eCBF)b{(l-V75^P;(}+Ym7f8pk`$C| zaH=S$tgzB*A(IE3vp|5lBGtfKIZZkDVX3KHyVX?)^4CCS0xS@KfBYF})l1Ln7zBRo zE>W!yV}cp4yj1pJfH<|?tHiuItmeR*{u%*r4u3M0X2C}soWq^dhRg886jyBV#TaL- M@x~l?ym1HsJ3n>0JOBUy literal 0 HcmV?d00001 -- 2.49.0