From ce3cc7c14ab0e237dd839132b3be002915a23f3d Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Tue, 23 Jun 2020 15:49:17 +0300 Subject: [PATCH] rendering test for raster brightness/contrast filter --- tests/src/python/test_qgsrasterlayer.py | 58 ++++++++++++++++++ .../expected_raster_brightness20.png | Bin 0 -> 198501 bytes .../expected_raster_brightness50.png | Bin 0 -> 198501 bytes .../expected_raster_contrast100.png | Bin 0 -> 198501 bytes .../expected_raster_contrast30.png | Bin 0 -> 198501 bytes 5 files changed, 58 insertions(+) create mode 100644 tests/testdata/control_images/expected_raster_brightness20/expected_raster_brightness20.png create mode 100644 tests/testdata/control_images/expected_raster_brightness50/expected_raster_brightness50.png create mode 100644 tests/testdata/control_images/expected_raster_contrast100/expected_raster_contrast100.png create mode 100644 tests/testdata/control_images/expected_raster_contrast30/expected_raster_contrast30.png diff --git a/tests/src/python/test_qgsrasterlayer.py b/tests/src/python/test_qgsrasterlayer.py index bf245d21ed79..6cd5507fec56 100644 --- a/tests/src/python/test_qgsrasterlayer.py +++ b/tests/src/python/test_qgsrasterlayer.py @@ -481,6 +481,64 @@ def testGammaCorrection(self): self.assertTrue(checker.runTest("expected_raster_gamma222"), "Gamma correction (gamma = 2.22) rendering test failed") + def testBrightnessContrast(self): + """ test raster brightness/contrast filter""" + path = os.path.join(unitTestDataPath(), + 'landsat_4326.tif') + info = QFileInfo(path) + base_name = info.baseName() + layer = QgsRasterLayer(path, base_name) + self.assertTrue(layer.isValid(), 'Raster not loaded: {}'.format(path)) + + layer.brightnessFilter().setContrast(100) + + ms = QgsMapSettings() + ms.setLayers([layer]) + ms.setExtent(layer.extent()) + + checker = QgsRenderChecker() + checker.setControlName("expected_raster_contrast100") + checker.setMapSettings(ms) + + self.assertTrue(checker.runTest("expected_raster_contrast100"), "Contrast (c = 100) rendering test failed") + + layer.brightnessFilter().setContrast(-30) + + ms = QgsMapSettings() + ms.setLayers([layer]) + ms.setExtent(layer.extent()) + + checker = QgsRenderChecker() + checker.setControlName("expected_raster_contrast30") + checker.setMapSettings(ms) + + self.assertTrue(checker.runTest("expected_raster_contrast30"), "Contrast (c = -30) rendering test failed") + + layer.brightnessFilter().setContrast(0) + layer.brightnessFilter().setBrightness(50) + + ms = QgsMapSettings() + ms.setLayers([layer]) + ms.setExtent(layer.extent()) + + checker = QgsRenderChecker() + checker.setControlName("expected_raster_brightness50") + checker.setMapSettings(ms) + + self.assertTrue(checker.runTest("expected_raster_brightness50"), "Brightness (b = 50) rendering test failed") + + layer.brightnessFilter().setBrightness(-20) + + ms = QgsMapSettings() + ms.setLayers([layer]) + ms.setExtent(layer.extent()) + + checker = QgsRenderChecker() + checker.setControlName("expected_raster_brightness20") + checker.setMapSettings(ms) + + self.assertTrue(checker.runTest("expected_raster_brightness20"), "Brightness (b = -20) rendering test failed") + def testPalettedColorTableToClassData(self): entries = [QgsColorRampShader.ColorRampItem(5, QColor(255, 0, 0), 'item1'), QgsColorRampShader.ColorRampItem(3, QColor(0, 255, 0), 'item2'), diff --git a/tests/testdata/control_images/expected_raster_brightness20/expected_raster_brightness20.png b/tests/testdata/control_images/expected_raster_brightness20/expected_raster_brightness20.png new file mode 100644 index 0000000000000000000000000000000000000000..f6bb8897d39b23e115f82aa301d67adb647313d5 GIT binary patch literal 198501 zcmeI)O{lF?7zgluIK-9Dx+z7-;3N?xrKGESaT58s6HyEpDCKM5PEK(KH%7iD21uDG zV#-L749G{x@in=LA(4*=$5Hm)XP^C++H1Y(4X4KK#Vi$MN@Hd+S4^(Mj+8`+MoV`(D0l zG&*~UvT`KMo2p}N50fwYR0$l>a+oj?jfdB%+8(>IE zB+w-wyj?2p5eOh4ya9%!L;_s`!rP_d9)SP?!W&>nN+i%FFl2Z?zisa|-UaBIf_nrK z1%?cAVyTuBAh2CPc(-e~CJ;zKcmoYfsRXtQ2=8_c*8~Cy2ydWaDV4x>0pZ=Q;hI1o z0pSfaETt0IE+D+yHC&evSb6aI&%6teC@;u~fR+;|B_O<|lz{M-l6NkFL;>MV1hkw$DFNXvCGT7Ui2{{}_oYiWy$g`|h*%y% zU}Jq{t@1R7n1dn-EF>Vj3$a;5puB+amY;zN2rMKZybG~eM4-HY@Rpx}3J5GDAiN8) zSwx_`fbf=|feHvLBp|#Cu~`&WVB^&z-&Xkl0tj;0CsN_93kYxPPk{cz3J7o5(J8!j z0pV@^3DAF70pSfhI)%3`AiS+V0s0RsAiQBmr|{MVgtzr4K>uL{gg4{pZrZo}eTDA= zWE8ShUjoa?8!!30VBYZO`CF~u**vawf$aTDUUpI&5*S86c!zOz3W4kb!keAch6IKY z5Z+;&okAeHfbeD~wIP9F1cY}OXQvRzE+D+wNo`1AR^ZVuzk8|gcL4->*4#G&VFZLX z%%~JfU{*kQXFYr)5Jo_F!;DIy1ZD++P8Q9KJS*k-vx+f(qz4Y+~n9bU4_8L`pTLFS20RWv?w6FElyp}RR{=g z6=T#yivq&i;?(tAg@Eu@F-A?aC?LEoPF>Gc2ncT#W7I^80^Q-g{EsKE^DaP(&x4+W z3UmiKXfw(t(2{`gwlrn$SNSbSvhS+U^oHc9nRWG1hNVUZ&ps5 z5g1NDc!#rg5`nA&!kd-TX1N7cUw`0$cLDxiRgnMR$WIX1l>*DjRW1FJyhUvrZ2omp zZ7n7Dvvl;I$$Qvfhrq`A%9?+EccA!6Ac}zSMwyg43G5IM-W?#m5{M!oyiq2lP69gw zgm(vsuLPn92yc{0sguACfkwl7$=(B}c^6>Ev*2rBfkuNIcw$N?@SlM2dK3r*6%gK_ zgHtvE;q?p<2r3}FK?kR70>bMVAP`hQc!Lg3*#v~wGeBS>@WRKRzY_CZ070G%(FK86 z0>T?>UaBQ95fI)9g$n|)1cW!%yi`kIA|SjI3Ks-o2?%ejd8wAbL_l~a6fOwF5)j^4 z^HME=iGc7)K#mcT?ncqbGt2m}+@SYKI_;9x^jE`hOt@Qx*X5(p+Byuk*hTmoYO;T=o( zBoItMc!Ld0xdg@n!aJ6z>+_tqzIisoy8v~e)ZC3A*F0UlRV^UARgYJ5H46xD&C}Ie z)dIp>^>{T`vw-l{JYBt2Eg-yAk5_Xw3kYw`)74wm0>WGMcr{nEzyjfY^U!6ldKaMP zheB`h1eQ}vUfMi5b&KlOAGQ2zbv>mwbVB+Tc9;=Z;9udH^}Y}wP)I;{3&A^)T27#pK#cHiJhlF(cL7R0BhC#V5F^L|AeBg9XaV6JTHJXAG6@K8CP>>57+PTI z#fR^BOoE4IcOHRE0>YaK(l!K!77*T{#hphWlYsDMg0u~Rp#_9@XmRId5xD915BGQ% zU`i>-QwvuFLJ0_OsBtNlz*InZrxvaVgc1Ns$ER1%!9r#2o@51cW!l zm=sB1UO;%~P23?6LO^&!j7gCM<^_az-ozaOAq0ds#F!LGU|v9Y=S|!p&?T_)?%6Nw z+IIm2xoc$Z5eOh4ya9%!L;_s`!rP_d9)SP?!W&>nN+i%FAiP~F?hyzeAiM#Fq(lN; z0>ay+;vRtj0>T?$NJ=EoB_O?gM%OLzzPHexq=~Tp-q8< Zhfh8Iw!0qx^xy7R58SZ-wX5!2{|D;Jfe8Qr literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/expected_raster_brightness50/expected_raster_brightness50.png b/tests/testdata/control_images/expected_raster_brightness50/expected_raster_brightness50.png new file mode 100644 index 0000000000000000000000000000000000000000..cd8f9c17f6ab5b9a0bfe92cf6a64dc59806f9c1d GIT binary patch literal 198501 zcmeI)O{nE#90%}oxx~n8X-dgU7B@*zQc4=lFgGuG+lZoAlDCD~+~O|8ipj=?lm%rn zTULr>BdlC+n<2`E$V-IlD(9Sg?)jHG&-4F3_xC)XshRUX|L*fVzu)Kg|ITdw%`>;$ zeEq3=&e<~>jZR%Xxc|1T&mXpae{|A`TYsMWj zF#+K%M!!1`{_NE&?;F1husbVMRhNJucd58XAb^1I1{jhO33LevZzz>wkn^sck7_bx!!6x<__ zC@^G@6HB$60D0N-tN5t|F z0vqcqYn7)t#2ge!U?BnFU5L#h0_6pSxBLuLKwu#O;a!N$A_C0G0R4v*5Z;WVyLI34_Z7Yi zkWt81eF-clZ@lF1f_cNA=Wn%sXY-`i1+w=qdD%&ANMINN;T^`=DFm_$2yb>$8xj~s zKzN67b_#*)0>Yb})P@9x5fI*CoSi}-yMXX!C$%AgS%D`%|Mr!>-vtolS##eAgb@(l zFr!i^fms3Jo%QgIKo|kx4Kpf*5||Yb-dPXd2!s(3-Y}z5D1li4;hpvHjX)Ry;SDn? zg%X$*5Z+mjXy4xb`=Znm##T*W9g(V~Fxwm5Y?S0Nz0 zRg6&+EeZ&4i&NKg6#~Lr#TYfwqJZ$WICVW&At1a}j8PLU3Ur6}sz08)!Mgx0J`Z{h zD$pI|pv@?oKuZF`+tRf4T9ttCRy9t|v?L(BElpdmRS5`hRpZo5O9H~%(zNwjm4NV8 zHBQa6Bp|#kO*^&MyFYmTGw%YVD)zEokb7aZDS`e4gtvcVClKgGKzMs$wJCxA1%$VM zV9aVYMlN{sn}$e`6;Q=tV$ydttRHf&K-Aw|`?N5a>l<*M#?qOO9RYU4UL@ zY|{n=c1@5Qu+}1htOCNDmD6Sfh7%Cp;jEoRAgh4zX63XQf#C#%cQ|V&5y&bayjeMI zMqoGr;T_J}Nd&SA2ya$So8=Z*J^IK2?*jb4sv!Trk)I&2D+QL5t6KUcd5hXM*!=6X z+FDBPXX*GqllQQ}4uOsJl{NqT?m+RCKokMtjWQ{964)UiygNXAB@jhGc%w{8odk9W z2=5LMUkOAJ5Z)-0QYV2O0*!|E^0N<|ro&OR6uxx z4o=wwgx51bAgF-w1|6KT2?(!efIv_I;SD-CWfKry&j5jmz)K&0`g+WF0R(w6L>B~N z2?%ejd8wAbL_l~a6fOwF5)j^4^HME=iGc7FVn)&hRdPAWuYH z5Qrrpys_q`S^^UR;hj*pAP`JoV|`^!f`biBxdg@n!aJ7mNg$Yj@CF;0atVwDgm*0A zlRz*5;SDx0;uFnhJ{`!Rs?*i0?Qgb(gT=R7GR<(feRy|(L)hr;qHBVP> zRSO7j)#KG%%>u$(^K|uAwSe$eJzmY#EFio!PgieM3kYx3K4_lKW_Qg>Uv6V=#=y=>@Xv+z`w#X>wO_Wppby@7J_#yfm8wE zO%=4BKp_F)Ed=ja0;vMRn<{8MfkFbpTL|8<1X2ZrH&xL3{{#-7dBz{!1t|462y!WT z=MqR15Z**U%L$Yc5Z+Sq&Lxm2AiRlymJ=u?AiSmIol785KzI`YEhkV)KzK{ZJC{JB zfbb>)T27#pK#cHi9A5v^y8xx05$6UFh!NxfkV+&lw1DsqE$%!5nFNG46Qpej3@xzq z^5geBEx|*xJC8sn0pZOAX&VAV3kdJf;?5(GNkDirLE47E&;r6cw7B!K2;BPnhkLvW zFr^gasf8;7p#+3C)VLH&U@9QIQwvuFLJ0_OsBtNlz*InZrxvaVgc1V3Q;tqij0>T?& zOo}8hFCe`0ChiajAt1aV#-vCB^8&&P=n`0Y@BEi` z?YjVi+%+=y2m}xi-T*^VB7rUe;q6j!k3awc;SDe(B@*Zo5Z*2o_Xq?K5Z(YoQX+va z0paaZagRU%0pSfWBqb8)5)j@lmBH^__P{$Ajz%Z^wz_}c9fKe4zzPHexq=~Tp-q9e ZkDj^r!KW@?|F`?q12^w~Ffzki~ literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/expected_raster_contrast100/expected_raster_contrast100.png b/tests/testdata/control_images/expected_raster_contrast100/expected_raster_contrast100.png new file mode 100644 index 0000000000000000000000000000000000000000..a45df27e920e73f15719b06e3f8bbdc476a4ba02 GIT binary patch literal 198501 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 GVC7fFRD%}) literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/expected_raster_contrast30/expected_raster_contrast30.png b/tests/testdata/control_images/expected_raster_contrast30/expected_raster_contrast30.png new file mode 100644 index 0000000000000000000000000000000000000000..98192237fa6729f91adedc6e3b27abb472e69e40 GIT binary patch literal 198501 zcmeI*Pl#Pt9S89D;zVtv29<6KLRz{QM1(F%K@f>d+D?nXHi05F*hQCx+PW|c2Xq#a zEZQpFWMdKBls2?mr3;}&+?3i?r=pu6x{``+q)o_l3cf$QcVS-MIdjkXo%;z)-hG#Q z&iS3s?|zxhA-Vj$vk%^W;?5JJ(dhQ=hqfL&`26?5&!0d4*@M5o`nO-ac<^!Cj~@E| zk4K{~zWwRX_)pKg^3-T_YP7v|`uxT5Xm59OXME+aAMGDJxb~lazWVdE$2L1~|1-^Q z&BpQx-1+!VlO{WsG}>SS1d0g=Z!vlc6G#&f-ZVd>2^13$-eU9?CXgl|ylH+$6DTGi zyv67(Odw4_c+>ohCQwX3c#F~3x$u>T@pSxO}^FCe`08m>zSY(Dqv_nieulo#YgK*I@?5)j@}^42Ag zC?LFvfQAz&B_O<|#T23kdJf z-vIj$DdlHFiZ!1Xd6b-W8BMLZC(g;jOVNY9g?Lfbgz> z^;$!kY+aIDt|E!dpt-x&#sh zgf|h;Z~~o|=vzQ|`xcM9-Vfe+=`YR#RM|m6 zuCgtPB5=5X@E&gD2?A9L2yc~bQ51p01%&r-BTo>hQb2gCY>T1@94;WdhZ}ixM z@9I{bBv6%r@K)6h#SmCsKzLWT@+5((1cbM$b|{9x>H@;Mx|JshR3#w1RkcGgivrtk zJbT7jfJK$%?}EH+;tqij0vpLyj;|+A(b@$2H$T_fmXh}~9^Xu!!vqTgd%K%Ee*G?> z_(~v(fbd4?lsXA42ng>2h_3{q2ncVKPN|c?f`ITYfcQ!vih%G&>6AJNEC>uVyf;o> zKIbgJ!n@#WV1a=KIdI36PT>Cn!s}Ha5L7^TgEmgt1ccW+Kp?1q@CI$1vIz*UcYr`p z0pShWIAs$MUhe>bsldzceehb$vjBoTZK4YTu>^!SR=-qBU@9QIQwkRZVhIRutbVDM zz*InZrxY#-#1atRSp8BhfvJG-PAOavh$SGrvHGQ20#gCuol+d}#l@ff?mscl0vs`n z>2nAOat=jv5GWuZyamuLNg#)S@a9l72Y~_t!dn2{k_2)H2yYHWa}X#XAiM?8ElD7U zfbix}GzWnK0>WDW-I4^R0{{Ki17FK<7C?}vqAm!;5)j^4{ZcJ~setfKDO?Z;Ca|}= zxg){Bnx)8cv{;fbf=*w=RK10pU#qG@L*w z0pTqrZ(Rb30>YaJX!u0n&4(|%;4HvIqwh~a?pxe?1TqN-Zzf375a?S#c>5N&9)U~( z!kY=wGz9t<5Z=DUtw$h}fbeF5G!22i1%$V6aqAJtBp|$*AWcJ{Z-E%$-TT$<4QB!R zemATaNFYX#1A!`)KwkpF+n2O;2xJxz-prt;BhZ(?_%}cK;Ux*~i`zN`G7AWAW>C`+ z=u1F&`;xW}fy@HJn;Fz}1o{#X-oB)*lU3l+kKR4uEWnIZkY^UI2!s+4-capQEPIu>@uU!aK8YMIe-b@P=xaVhPLygm-2! zx%%$OZ(nm3V4~qOgn%H2Xp%_ z2`mc;@3M(I1VRW1Z-_Q2lEAWn@GhIUL!e7w^N*)quJ$Z|Aa}LQJpus)gf~Ewlt`dU zKzO@U+#?V`KzIW*Nr?oy1cbLs#XSN61cWz0laxrHOF($LRNNyFKtOl{G)ajBx&(x` zOQrXF_dfmB-J{X*|7~xbKHvM|7HmL3kQ->CEeuoO{pY{*<4W;EJ9b9U?X I?>xEt3B_1}JOBUy literal 0 HcmV?d00001