From ceb2c82e5c1ba30c8cef0b6320f97379fa758e8e Mon Sep 17 00:00:00 2001 From: Oliver Schmidtmer Date: Tue, 24 May 2016 16:39:59 +0200 Subject: [PATCH] Fix getNextChangingElement The Testimage is distored without this change. lastChangchingElement must be reduced by 2 as sometimes the nextChanchingElement is bevore the last chanching element. Reset the last bits does not work if the number is higher. --- .../plugins/tiff/CCITTFaxDecoderStream.java | 6 +++++- .../plugins/tiff/TIFFImageReaderTest.java | 1 + .../tiff/CCITTgetNextChangingElement.tif | Bin 0 -> 7612 bytes 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 imageio/imageio-tiff/src/test/resources/tiff/CCITTgetNextChangingElement.tif diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java index 602507d7..16ac23b8 100644 --- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java +++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/CCITTFaxDecoderStream.java @@ -221,7 +221,11 @@ final class CCITTFaxDecoderStream extends FilterInputStream { } private int getNextChangingElement(final int a0, final boolean white) throws IOException { - int start = (lastChangingElement & 0xFFFF_FFFC) + (white ? 0 : 1); + int start = (lastChangingElement & 0xFFFF_FFFE) + (white ? 0 : 1); + if (start > 2) { + start -= 2; + } + if (a0 == 0) { return start; } diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java index 075c7620..bfbb46ab 100644 --- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java +++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageReaderTest.java @@ -97,6 +97,7 @@ public class TIFFImageReaderTest extends ImageReaderAbstractTestIzsA}}87b-3-ilV5t)QCue3Q>ADBZ}%p zX%U9fk+{{{>4c8D6%E=((WwsVQuU?Z`@a9@d;aS=&)(~-XPv#zbN1SM{eJ80*|W}K z-8!VEdE-kv$X?+;-Tznv0qCSL^bHt-{zBr6mfGYI6JOa0h%S^5MACjv1R4pZ{_)|7 zq6KV;O-bW2oB|?M6tY{azA| z9a86McXM_>b@$=(r{2}xH}BRa3gMRvZ?wwuGkmi$Y!_SMXoP!=1pY4t|8t2?XXI~G zHkOl5!t5k&Xbs5vJ?A*RC=^w&Aq>Je@a|!#;AL0pwP0rfK-*xBb?ua21*sX(Ptdda zc8(pG9GC_s{aP*IhE6OGo0!ArXQ;SY@pSeXXrx%#;oo-Ix!w)o_!zYi9k0LK1U}E zkKUxR0VCsb7(IX&i7K#XQ1YFyC2%i++ttaMUp@riD2V8VzqlW=i;-^c$KJP&OIGfFOwh>q>*V4Q zBq$Tsw`1X~Hb`b#z3D-UGpf;3(u$zB()Nn?x^3j5OBl>_oEc)AqaO&AKcntl(r(*8 z;7~!Kj88P}p4j%DV<%v?zcz@XJkmgL5$x3*4_hZyow~~c{tPM|!@E)T_ctm)Jr&pr zx46*QORmUE(&0}z0eLMtHv*m$U=;X!%oou7 zK@|u4*!CD_s~0H;TaoK_#%JrQ z*mAHht8Qu^JT~ZV$vs0>q-owE0}8~cv9h>~JCr`gpg?54v}7rzannfwFs+$T+e9O2wlte?r$n0|yU zYva?LMq%GmcQF0p91kvar|8T;w6Uo%o`x=qU-T{>EqE=y1&NuRk6e~hPCJ?P0ED(d zx+aK(z?&y+_*Hy`paRnGDaE6b>jN$Id=fEah&m>w(>Y0S_3zR@(fWk`vdcTwxW-;! z++ufsGg4 zQ7xPDwWPU!EBEI3sROG0Q?tjNed&ESd$$tn#arHv7twd@k1|~QBi)hOsi1HN4!CB< zQ9(Q7A|7|{@`b`X@QFA;)N^5NPRlpYEML@J zyNRyJ#wS=&8y~;y>Q(irn#>$Eo;?QY+!_it*qGoI*QUQBabvlu_>cBRc+O8;iRPdV z>*!@1^zE)tvl+4;lh-vKJx;~P)*UBBIJhco=h&rUEfxRg@$m|{Z-{nOIc6s<4tui1 zsxbe)PSKcC?}G}ndRn*t43o0U^-IvaQ-$5%M=DtF5#!%0D)ucVMufP!<|l@Dga>Ku zE5zk7*=YdW#AExg#bops7b`qnvzt2j80En>O5aKsTjfee8qdY)al76p_$TbhpU#f> za(HKUHd4q_qlp%z@dtZ8K|h7kYme#`1;a_tabZ#~svxK?*+jJgx`(w-h|v(BP!w zMY6=Q4a}y`c-CQyx{OfLk*!3YIV#k>WPiMtP>+_BBYa)JVNPRnG8AE}UfiFLba?q%x-+VrgDgq7%pdZtKn87^Zc+(8LA%lJ zibsvKq(FVoy@4<2K&vXR>+g<2ILF+n<&|Q%8!pMN!dZ}aG)ZuqAj7XVI&He!ii3OE zF^clxv;K9_e?AT@!NoE>cZl_CdiKoJiqvnpp~f&~n73_PpzU%CF)q0DFVMr zSv6`a&(F%dt7Ir@ypvk@hR(7CAI=}uF|jN$JB?`T07QsZ#FI|VvV%RXx3Vw_K~}M1 z5LO^ZXR8h7x#WDf^W5(IIDrN5`JYD;4zv^o5aLJ)XkPMU$^8TaO2`%FAAlY10fhO% zX!rYp&SjU3n>%mq3Ke8mN3=lbh#%SUbYdtKX0U;Q^hs{3fnPXBZ|L2cUd~An=X~g% zJA=J*lA+p~t4xbOWVqaxXmG3Mmi3l`0fYI+M|TgKb-m+XWq`)m;^`rW;5Y`v;RP+u zPuLyD2pOox7CQ=mpMU`*)}5*nLsn0iiiRK8@YqzGMQ-627eP5s*!@(HJrQ?Y^Y`Am zi6r7xg9fz-YRVqA`JBX%a_Z+YO=%2PVqTZs)CjA7Y zEXyWq57g*EBZ%TMz9Oq5Ao@%MdfH*NJU&MjFK*+Qqu%B!Ry?jZO)$75Ti|3Jv7~7Vcc6Zc@ zVkRMb-*AwS<5G#)We^`e^u%^h_}OQ zxc_ICc>W_GT8rkdPVQ_qgITEGS{OF%i5|HrZ%9ttJXRl>Q*q+enUZUzliR%w>6%)* z>&``o*Urq=u5O>)BxnquwkKpF4p>N&aUU-AEq5#r^{n=+a#yU$u%|nk?AZ&Sd_Pov z9}c_l{n~>~;`GO1mQLHoE-GA_ixAxS5t(O7D z`G?4_pQS3_Z|_*#eVY57374+5AYv`6XkHTp?%>D9D&gMfg3$r;!OAld?5}GEHAl&W zlu_1$3cbVUR>>zWWnsV0DQtGH^+&yGLawzP}2)uzU5>lkF1L@RQ2D zS_$>Byh}}ou8ppVE5%AgQ7)Qq3`e@98yl`Y``))U#gv{?#wa<8KRJ{?^N6Z?J!Pt* zPdqhM=e14djv;&YMC_W6Ntm!7AN@Eu=)chPXt1h9*I7TJ&SNXCu&>F3qN=PRoq z&}Fzk`ABgw`Ia&IK~AVGKnm182EV1-?}i|7C~P!rKa@aGH_NK|I3SNR-}colE|AK- zJgbSpI7JY;>gk$O35tm1rZ=<*Mk2)|vzXj)@#6Nix`V7V!|{m7S3_k+X-S=VOesv5 z%#r&wZm-?*aCW%*e(y0KV7!=|=tT^iWzCEyahdY6f~p>_KGB?~Mb?P=+kcB|wRdgw zDA&C637n06#GINYio+IS`<0+-gyl1=&r+2H?=J<=hHuE>XBUtubsUa^HPqGvk_L$W z+MLD87p&0YQ3b9*8ypF}mFxJ^ zu{;TX>w!AUaE`-~<3|V_nsDp}R@Y(y;2sp*(}ku`mv z7?1LVfW%WXR`ZWeAAEl}l-)SFa_J%$wG;Z>Tz?Wk=_b2_>w16jmh z?osPhq}qrV6ecip=+BX{(O$8vkXfc@*O#JSB%nhmf0Pmavkdd6kjB#b#Gw3CD4!&( z1msAnxQs(x8_tYKkBXeC$*tDdJ3n6l_0b$GK=8tlLEx_WwDb40J;U}(Jkr8yr-G_# zGRK_%Jffeta)wnU0kvE$gfcD{o{Y+67|#^-jY%MCs{6T_NP*+vDD4;aIn6GO)j7ju zcxE(bAC&5}Et2yucFs`j9`Nb(O-K{%cvRMye~~mirqj90x0 zpSkBp@|^F@Ff3d^NH`2PL!am}y}(a8%X=g30XX*-)Vm$W{D8pi=P(XW?ArICX0E4? zIr0*1um z7Any&*Po!oxlJ$8@T<~sBEDO{yTkln2qIbYbQ&}@*z+YH#VyX*0;y~kf4=!(0HGJv znOOMnT^NQ(i!-1$54d{%W6$u2EM=V3f^%qNST<5v(v8IMphRx}qAPznsIJ#;x>Gc` zY7>0cT9e@$;$FV8|H+j$O}^ro5B8;PPhFUbQ>!KfneGH^&P-oym_JVFama}CQ(~&Sv?KvPw4qZW zxQtQB-SwX1nobGxLE1CiKAaApd{D8E4y5MgGGE z7(cxG9ZiPvlm$=|am(gCx^U`dx-9VT*OUAFcU0dmCPFK&PS|F{ze$RX2R$InRS_?$ z4E>a_R?6a9LGWh9E>fLFHC5f_nW;HB1U-N>;Va+{?2YQF8+EZzyD;t+*9g+wAP1gZ zln1NmR+8fpK-8s-8P>~t+Y??ld~E*QM&D4AcFL87>ZdzWZzqF&+2wMcT!-XgKS+Tv zsGkhO9Qcb&cE|<}V{a5*G&tG|_ZvVMgcANNCJUR>dVf{X8B!}@{w)EhQ3JiELr=ty z4!saa_9)kcLSvOZ|MXCcADv4%sV(e#XM>yqY&y=T4}P3%C`E3AwNWYe)d4fHmOk(@=xbA zNVf&`?Q<0-@QV5v9=u<9Xn}J~ISxIZJ$je2LtQPRnUTdVo8ru*RE}Vz7NL^AcDgxZ zmWz47a)QiFf-PzRWnm>+?nJT@S{)fYDpqo?6ObFmpRNiwg=kL3T0HA>5qkU1&(=qZ zy#;3d7j(2ddgOH_dHO3$$Yc1KGvE2k_?Qw;1bIAyLi+3a<;HOkGIJ>)wXYihFl5 zo=jeh%JqQcwQK4}PtujV6mF8GDtRdJd=^ViV8f_O{U5&xekE156%BH3 z?1OEJ8GL*DfzaH804X8;c8rd`8|IVjRrr+!9Um$Oz7n~$xq;@XvIbEziO4C#I3k1E zKMt1Ux@*nc-p6oF-MIHyX;Na_jpvSLSOiLFT-g?erleGLj$wEpo$Q2Pn-AlPbV$lH z2?IhK+S`?>Xq+Q(q!yEhpNTB`ARq6cXerY>*>Z}?mCBBVLofI3f1FGW1(Av4!!>LV z$mY6ZbuXv>N^?!Mw6W9dd|QvpJM;P?8AFQb;+&xfUkLaLvxuVaB4v(4-aM%*lF{N~ z5KLMeW49Pnj5ci}+|pqjlHJfMyMh`&k2LI5NU-k-HxPQ*CvOw2F!%avwD9MVcvj`F zs+Vc%BHBjorvRGZ}HtfzI*hT^_I~6sxLR5iTt+xQUWul_{Xa>Gj@F;Tl1HcsMv+^ z#}gN2r8th!sc67XB>mu+Bg*?9q%KD|V2tHTNWrOeHi!tmfU{T5q^VV>U{l;bV$i5A z1Z!`x3&%J6QXYV(XslS0vo4xs+ar^={Wi_-#L0KSM=`IvjSx$^Zysp_q=m) zHSk3bv@>#p1I%RX-S>FWtI}|t^`u(c&pRVkHTw9hlVn^Qz7q*8gQ(lyn z3WQUI{h*7++l3R!($D9EuY~q zu9ui>I!|3bPN&qs1?J~Ga3FQoX)ih7Y<1;cq4oD=Af4-jJW*G~juLgzFU{Q}UNzIQ z_!Dy59**iu+3S%{qLxnesU7)U)YBLfqBY>llv_V)N+}`gBSf#lPx7ZC&8CTY_dwbF z2wFu!90TVJN?a z>82{S$2Vf$v(n}w42_<{J(Vl{!V@3% zzy&wqD|n(h9l{u=MEgFF^nbWRlHqZFU>JttVi*g5jZ?|Be~m^ zj~#{gmp0ifR>tF#!EWmtA$zVEbt5;Ld*l~5)cWOXY=K1+q&Jk6)mAFGh&_#R6_7lC zLz?9bjZY~k^}-OS>!Al%b1{wf=(|ndO>UjFqc|j(1ZRU|541 ztOWbeF@A77nUkM-IY;=#>EAoYrJ|5TJC93G_vA8^ z@T2NN4W*HArd!caTUJ~C0hkVHm#L8S4mKe^k2Ux#Y5S;3wR_Gj=VqAWD>k5J|8@`WgF!D3I-K-0iz3Q+x;z zaE=GHhr1cj5|B3a*Dpo~scIP44B!vl-0jQ8C-NzM?)yVc)Ad*!YJl9{hfR^dxX&81 z@V-ksIl@gUS~0MnFu(0$6;)+&7?h*hzm37F1rJGIdv3WcgBk9K#Sk&t077&|&`@{2 zLYsVyJtR)G-py;dzZW0U=UmhxSsVl?L3GW|C4>XmjYRBu#@R2w?$A~9anx-GoRts4 z@EJw1HNs(>U_r@{Au$p!OUa5;nLOVvqd!ZS>fb3l8?MhvR)J6tcBKheo%^Z+@uJt6 zM*WeG4d-!JA1D#`t ztjyue!>3=da-G%Qa9u6&5+ITJMqh{qj(Q+26rj^eWv*5IXu>-)OrLH~pH9gpSj@gH z>u*=3;x})^B3>qvV|zMJ_2ceJqHE#7=;Ks1kM%9w9!vG~Km}S=Q$ggOAUtyY9KIi& zOWdbg3y%+5ESsd+kNh!cK+7u_91=Po4}53PCX< z1Km+ps6B_mLe8Ox)`WHIG?nf@{dh_(P}!{ix4urQ)HnP`|1sWA|Ir~zUG@Li!F5W@ zj~Uki>o@-&yY9d3DQjzM>-GNYgLt{#V4cdp{Skxf4ga4$w%+8wKFY!H{~2e4Qny{F PY}et|twVfN_Urx!Qgc0v literal 0 HcmV?d00001