From 81c61cd35c0908c622e62507b37c47fb49093f3c Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Fri, 16 Aug 2013 19:23:34 +0200 Subject: [PATCH] added exif method (read) --- public/exif.jpg | Bin 0 -> 7791 bytes src/Intervention/Image/Image.php | 17 +++++++++++++++++ tests/ImageTest.php | 21 +++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 public/exif.jpg diff --git a/public/exif.jpg b/public/exif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab98706c205e3054afaf64359c11890fb3d45214 GIT binary patch literal 7791 zcmeGhTW}lI_3o}-mSjhYZDIn$EXteK*2`9Gfk`acu}!1Ik>tF7I;-84ykxbj?5=Dj z9~}sxw9Irm389p9h9LoPzvopn-FN}V@5squ689k=24h_ z)z{wpIOp7R&pCVU*?V>BFVrtE(nL)vB9zIXn-D@Cpl0HHTb)DUx zr#3cdXrPHAs1Xa#r>Gd|_dx$4>SogKg#OukB;wDw7?Wf)?vW+WHIi zH;|ub^vQGvQT4x|E;2&G9hk2E8*~);JswYo$KTQ65Bj{mVDAdQe?@O!cXw}hcVEy? zN~19ci)*UW=j-h140Lq`db+y0dT`a%V@?Tv5C-+9P|$+{D8Nu5LcS_ zsVyL-lOhEK#)Ux??Qpu>o(``M9HSjcA)2v}0Yo_{hIY_Sx69*X{Bb}A8OMz)qt3Bi zTzBZ;oiSI>u~Uzy)~xN#K3#|pYDb<+yVo7hUAl0Y*N3h-efF;PEMyPv%O*7QRijchV2F1zn$eA1K~-f!F|8P)s8q`s zf%~{k%Nic9Aaiq44O65f1JA)|lc%Wd;L2itVs9Qm=3?fA8BJA-Ink(Ab{1~u0qI9G zNJA?86%mVaNJIvzq6%h(ycL@oMubgDHk5`${z6rf4M`y^0pCHW)0usrFfDg8WkR}95c0+cLh_8?o*Gxi{@De2}wF`9$z1zEQ-J4(j9J(wuV z!l4ZUwjL3paDb+C4vaBkl#uUGW z!6LN4J1uxtD$TVbd=>&^v+40(VcsxhXoPLrYRNuYPjFq0MWNYp2QvMwlfdwPtr5y= z?ePtS>lHHYAT?AJnFXIXT)d4<0uD=P-zLy06fPD4BSQ@zA}CY?a_Yg8HY7&i`=PdI zh6n_Eegi^yz5`=~cUFDL!n}sjOQPx@1xIY*!Mv?~NN)u-;c3|I2HYc`Pt%U8@sOE@ z%9I`t&AHfCUNnmoh!GMzGDHgj^`j`j8`}qy+NBkS=bE;*(MwOlM2(3`RmL$5pI%%A zwW#cHl<55PWUHowr;feRH=3NuM&K zkpmyhO^2q)EKHB+I8=B`U`NGI#QZ+N@wN}ngUiR+<>Tzt$63?6ZUk>Z5V663umi0? zV-T=aRDi(E!ohD2`UX5Y=~aND`+X=_l!ilM0y8vMFuxIQ^ZG@h`i0KPIm4(V!(l}q z;PAC^fLF`m8dnKN2O?o~%a&S&;}3`iTM!{aj)wmF-S3B3Nf-_78OlU5m9#h~O&!+6 z+~FO0{_p{QL`{fM>xS%jnNQD zYN}AK*ld@yl|?A&vIOK-2qOMjoUYwW*G1uV5D#^4aa&Vr_!&%mPQO!%&qF)tS zW{7YA7Dq$)XNLaBaDOzBho2eXe<=2`NGutNn4}q1kcx+vA|<~_w2^|(2ym!=Ut)nz z7FDgxfyPpqD~aLTD`F|c+J;P$FA1y+;>C#=nM`t8(G5=F#p&_U5NJIhNkTFb9|kAf zJQ&#=izJ4l(c#E&d@M3Jyg88ucxuF&JFfCo{9diO!hbQ>JYjJ1hvET#56bf93uBTdmNu+%8*S*#gTJShm2j1(q%Fe`JB?rASoZXt4lSo|dc>T(%lnDVM|Ha5`L0 zr>nySkI&&R_JbzpKOBckR&=6Wbnna`*GI z8&|*i@)ew!603LLZ)T_7B{?-bwRf)enJ+%}tslSe+B=&@ruRvQKKtNTzx|UJ|MZWW zlDF-@{qVgfzxJJ4eOh!^1FTas|hUv@z!{kl1zb&SSAtk6-F}`nd~h zQoY%Nb~(OwFn#2jFnzH8SfCRT3{jM>d^o_XS#jhmi- q`O47~k388f^0tdirname .'/'. $this->basename, 'EXIF', false); + + if ( ! is_null($key)) { + return array_key_exists($key, $data) ? $data[$key] : null; + } + + return $data; + } + /** * Convert rgba alpha (0-1) value to gd value (0-127) * diff --git a/tests/ImageTest.php b/tests/ImageTest.php index b1cf61d5..450a036f 100644 --- a/tests/ImageTest.php +++ b/tests/ImageTest.php @@ -1397,4 +1397,25 @@ class ImageTest extends PHPUnit_Framework_Testcase $encoded = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAChklEQVRo3uXavUscQRjH8c+t2MhhcUhiKolYiDFXCIKFNkoqrYL/gyT/UV4sTZ3CgI2SIhBBsJBwWKjEYCEptLmzSpFi5ny56Hm+nLdjvt3e7t4+v52ZnWee3xTcHyMYxiAG0I8SivF8FUc4xD72sI3KfTy8cMf7y5jAOMZu+R+b2MA6th5ayCSmMXPujd+VKlaxhm/tFjKKOcyiR3s4wRcs40erN3Xd4AHzeIMpdGsf3XiBl/G4cl9CnmABb+PgfShK8aUVsYvaXYQMxlZ4rXOU0YefOL6NkLqIVzrPUBSze5WYribdKS8i6jxHb/wA1FoVstDh7tSsZQr43oqQ+Tiw80pZyBAqzYSMxi5VyrEQeCakN7/rP2QNF8zF5ss7QzFWlwmZFGbsVJiNMf8jZFr70o520BNjviCkLCSAqTETYz8VMuH+stiHpBhjPxUynqAI52PPhJXdWMJCxjCSCcvT1BnOhOQwdQYzoVCQOgOZUO1Inf5M/vOqVihl0pw/Gilmj0AEwjxSfQQ6qpmwSEmdo0yoxabOYSYUlFNnPxOq4qmzlwlr39TZzoRqxGbCIjZRqc8jGwkL2eBsYbUuzfmkGmM/FbIlmCypsRpjv1BFWRNMllQ4iTHjYqXxF54KJksKfMan+kFj0riMnQRE7MRYXdYinNVSp3Iu5B2+NhNCmFeKYuErhyxhsfHHq/yRXcEhyltBewUf3MDoqQmeXZ/gFOWBNbzHwWUnm3mIx7FlenPQMitRxJUJ7nWu7rHg2RU6OGaWYnc6aHZRKz57TfDsjgSn6KGqLjvC12nRNR57q0LqVISU/08cN+3a/XAiTHYfNXxim/HfbqppJPltTpfR0Y1nfwGRl30LQuetpgAAAABJRU5ErkJggg=='; $this->assertEquals($data, $encoded); } + + public function testExifRead() + { + // read all data + $data = Image::make('public/exif.jpg')->exif(); + $this->assertInternalType('array', $data); + $this->assertEquals(count($data), 19); + + // read key + $data = Image::make('public/exif.jpg')->exif('Artist'); + $this->assertInternalType('string', $data); + $this->assertEquals($data, 'Oliver Vogel'); + + // read image with no exif data + $data = Image::make('public/test.jpg')->exif(); + $this->assertEquals($data, null); + + // read key that doesn't exist + $data = Image::make('public/exif.jpg')->exif('xxx'); + $this->assertEquals($data, null); + } }