From 5c3b10ee87d9a3c06bd438ce20d821cdc206e2c1 Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 27 Feb 2017 15:41:28 +0200 Subject: [PATCH 1/4] Test PSD for similarity --- Tests/test_file_psd.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Tests/test_file_psd.py b/Tests/test_file_psd.py index 2b4825734..bd1aca66c 100644 --- a/Tests/test_file_psd.py +++ b/Tests/test_file_psd.py @@ -1,4 +1,4 @@ -from helper import unittest, PillowTestCase +from helper import hopper, unittest, PillowTestCase from PIL import Image, PsdImagePlugin @@ -15,6 +15,9 @@ class TestImagePsd(PillowTestCase): self.assertEqual(im.size, (128, 128)) self.assertEqual(im.format, "PSD") + im2 = hopper() + self.assert_image_similar(im, im2, 4.8) + def test_invalid_file(self): invalid_file = "Tests/images/flower.jpg" From 921a25d144c56bb4cb4213d3739f671d69e4aa53 Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 27 Feb 2017 16:09:05 +0200 Subject: [PATCH 2/4] Test PSD seek --- Tests/test_file_psd.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Tests/test_file_psd.py b/Tests/test_file_psd.py index bd1aca66c..dd75a31c9 100644 --- a/Tests/test_file_psd.py +++ b/Tests/test_file_psd.py @@ -46,6 +46,29 @@ class TestImagePsd(PillowTestCase): except EOFError: self.assertTrue(im.tell() < n_frames) + def test_seek_tell(self): + im = Image.open(test_file) + + layer_number = im.tell() + self.assertEqual(layer_number, 0) + + im.seek(0) + layer_number = im.tell() + self.assertEqual(layer_number, 0) + + im.seek(1) + layer_number = im.tell() + self.assertEqual(layer_number, 1) + + im.seek(2) + layer_number = im.tell() + self.assertEqual(layer_number, 2) + + def test_seek_eoferror(self): + im = Image.open(test_file) + + self.assertRaises(EOFError, lambda: im.seek(-1)) + if __name__ == '__main__': unittest.main() From 1a607bfd56b348b85c6c4d7506c9919c8457211f Mon Sep 17 00:00:00 2001 From: Hugo Date: Mon, 27 Feb 2017 16:45:31 +0200 Subject: [PATCH 3/4] Resave hopper.psd with ICC profile, using Photoshop --- Tests/images/hopper.psd | Bin 171559 -> 175119 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Tests/images/hopper.psd b/Tests/images/hopper.psd index e8b184cf5a3f111cf2b9b6af8426b5264f96a7eb..5ec686ca0220f8d392ead8231355a67b0af80e2b 100644 GIT binary patch delta 3452 zcma)<2UHVT7subsq!(I3=n#4{Ktf3X=`|E7B25%92@p!a5Q;SxLugMPO&r1pZLVZ%yww+#Tv{@*^Ru0a!pwKw0m%SDuxa;`q%q>s0v;tsniKV&uw-s40Pp zD?}{GhE)K_lE|cy0p85mxOgVM55Ry3aDWX!vLH7nbh>|(!h`SU!^}mE6#UnK0C;sB zpmzYSumZ!G%)j*SKID^TRRuXx830f?s@V%gxdN1nP|hrnf@W|Kw1XqyBsc>u zfJ@*SxD5uu2zU(SO@gR4|4+?=Ip*ScBN`)j)9<&fz z4wXU`Pz|&lYJ?6zhoO_uIjA4H2@OGG&>zq{7=bA;9oB=*U|X06d%?kQ6g&$~h3CTa z;Uah~Tn*R5``|YCBzytB1`ooILwt}hBpyjYq{w2V1gS#mk!GY5 z=|Qd_gUA!)Ee407VVD>e#uXEYnSl{t=3*9O)?jKddoXR7Zp;uO$OfVpD2>yh4f`qV)P(|2FI7YZk7$v+X zst`?yF2pdRkT{Q6Mrxm_>O(cWn%qpyPfe&+q_#utl-e*2p&8SBXad@DS_ADgZG?`a zo74I9bb2ZMM|vN9TwP7wK|NZ%P`y_DsQMrSVVE)aj7&xu;~?WY}HM|>KX@$3CWNtLWXqi!q(OqMbG0!-~c)f9#@wkbB zNvO#}lO~f}rbJVoX_~2gqiK)nYcq4R7_*gT?Pd?nHO=|v^Ua&g?^sYRJS^r~)LUG& z#98tzGc31QUb2F%9Ieu!`4pLV(Tr|{Zp`0oTo^p)K3{;QCMEAd{z@{$cAAP zVzbPq-R7CCiEX^?I@=!Gk9LlBnRX3!x7lj!AoenLC;JbM6-OZF)N-!cQ|*C}hb2;epyDQ5z!*#Fg!>Q&|MN=E54!aq-CA)2R8+2#7C%JEPAM`NvNcO1rxbJD~ zDfHasIqGHUmF^|q=k?6n&Rgnz$osXAi_apT6TXOVfNzO!pP!oF48Iz`d;UiLss2s= z;{lEV3j$6AVgrK%*98vn_4opQBY!-I8?-2>JD3tYJ-8t`2c_vcvW6z2@ib(y}xM1%d@#3k?@8T{yJJYteT3VrcQ4#a(h^d69f%Nx+gl zOG!&Jmj1HLZdt{$m&;?8cNXatEh!pa5wN1ESgBZAJh0MrW!);wD)Fkm)%L45t^Qad zEID6lS6Ws2VU1wT`5)LnRR8d4ZOYodGN-bw<+yT5`So=k>-JQrR?M#$t_-bgThCly zvi{|U#0}@F9IEOz%1ImZHV#&YRCjDL*;KyiLrq%EwOa4mmd(1GS8sm3MY!eiR?n@? zb$WHBb?>%`x82wtu)VF`tiEaoZb$x(2My5;Jv(_j8+U2%D&6(xZprS!J&}958@Y{* zdv*7gHNj1JO=J5K_FekX_s5QAR`d22MoZ~_us?7AqXS6?t{)6O*d=e}wKo4``qSn^ zv_mCrP}{t=@%FU#!H&3&{=-3syEiWr>=HKboZSOK7IC#|Cv)gUOmUpx}808&gIg=D|FF$tKocz37)Tfxydk{t z@Mh-C=eP22y}!NW4)#vTU6s34_jK>o|7!Vb%b?TX(IMZV-uu(<-yRkWKmINEw+|yl z52z2SMh!+AA95ZZ8S@{z^l0Xzk;gfY-#;mSs`_;EGmB?G{qFgD?|AI^$aCrQPk*d= zp=I-8_e+PDT@&FG_g-badjGoQjn6Tm}?Q0P=)}sydiOALn74PkO(h#{|~zb BO>Y1I delta 182 zcmeCb!L@u3*8~N=L4W=WBDV*%z*Ahir!3=IFlVDl{Z&n%pR zU_nMkhRt^(+C?-?tPCuzjEofw&8-Y9tV}H!7+5ASFt7s^u^1Q`87^RCU Date: Mon, 27 Feb 2017 17:21:27 +0200 Subject: [PATCH 4/4] Test PSD with and without ICC profile --- Tests/test_file_psd.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Tests/test_file_psd.py b/Tests/test_file_psd.py index dd75a31c9..04a171cbb 100644 --- a/Tests/test_file_psd.py +++ b/Tests/test_file_psd.py @@ -69,6 +69,18 @@ class TestImagePsd(PillowTestCase): self.assertRaises(EOFError, lambda: im.seek(-1)) + def test_icc_profile(self): + im = Image.open(test_file) + self.assertIn("icc_profile", im.info) + + icc_profile = im.info["icc_profile"] + self.assertEqual(len(icc_profile), 3144) + + def test_no_icc_profile(self): + im = Image.open("Tests/images/hopper_merged.psd") + + self.assertNotIn("icc_profile", im.info) + if __name__ == '__main__': unittest.main()