From ec07d025c189b003ab835e0a669c422790ebe0fe Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 22 Jun 2016 16:18:36 +0000 Subject: [PATCH] XSLFPictureData support for TIFF images - patch and tests from bug #59742 from Jens Popp git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1749732 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xslf/usermodel/XSLFPictureData.java | 3 +++ .../xslf/usermodel/TestXSLFPictureShape.java | 15 +++++++++++++++ test-data/slideshow/testtiff.tif | Bin 0 -> 12236 bytes 3 files changed, 18 insertions(+) create mode 100644 test-data/slideshow/testtiff.tif diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java index 3431d1c241..9f705e0e04 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFPictureData.java @@ -249,6 +249,8 @@ public final class XSLFPictureData extends POIXMLDocumentPart implements Picture return PictureType.WPG; } else if (XSLFRelation.IMAGE_WDP.getContentType().equals(ct)) { return PictureType.WDP; + } else if (XSLFRelation.IMAGE_TIFF.getContentType().equals(ct)) { + return PictureType.TIFF; } else { return null; } @@ -267,6 +269,7 @@ public final class XSLFPictureData extends POIXMLDocumentPart implements Picture case BMP: return XSLFRelation.IMAGE_BMP; case WPG: return XSLFRelation.IMAGE_WPG; case WDP: return XSLFRelation.IMAGE_WDP; + case TIFF: return XSLFRelation.IMAGE_TIFF; default: return null; } } diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java index 2d7402f714..95d407a02f 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFPictureShape.java @@ -32,6 +32,7 @@ import java.util.Map; import org.apache.poi.POIDataSamples; import org.apache.poi.sl.usermodel.PictureData.PictureType; +import org.apache.poi.util.IOUtils; import org.apache.poi.xslf.XSLFTestDataSamples; import org.junit.Test; import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture; @@ -193,4 +194,18 @@ public class TestXSLFPictureShape { assertTrue(ppt2.getPictureData().isEmpty()); ppt2.close(); } + + @Test + public void testTiffImageBug59742() throws Exception { + XMLSlideShow slideShow = new XMLSlideShow(); + final InputStream tiffStream = _slTests.openResourceAsStream("testtiff.tif"); + final byte[] pictureData = IOUtils.toByteArray(tiffStream); + IOUtils.closeQuietly(tiffStream); + + XSLFPictureData pic = slideShow.addPicture(pictureData, PictureType.TIFF); + assertEquals("image/tiff", pic.getContentType()); + assertEquals("image1.tiff", pic.getFileName()); + + slideShow.close(); + } } \ No newline at end of file diff --git a/test-data/slideshow/testtiff.tif b/test-data/slideshow/testtiff.tif new file mode 100644 index 0000000000000000000000000000000000000000..99e6bdeb72350298282b7c805c6fa276b52cff9c GIT binary patch literal 12236 zcmeI2Wl)?;-{yO82=0NP3GNakK$zg}?(XiI3>rMRgdicfgh0>$!3pjXWP-aU1PPX% zoOAZA=dFEet9EN^KRq)a?rZM;Pft(H)YaX;zU1Xufe|MFF!2@D6BJS$^l%AtwI(Y8 zD!eEu3w5DF9S*WM8B6u14IeR@L^&%B;YaDpOsNXi8qHP>#$1_7Hk!hPv(AEVRBSby zH_n5_^VRIMo-mNc%NA2x39SQ89ikp zi~q9W;cwKmb)7Y~;}u~1v_!XR?!YHd1J~EJZTZA6$V8keV`TfMX3OV1+eY~DWzcg| z@sc^&{p;s1Oxw3FZhm**W1}3=x;?-_?!;FjLG4U*dN9|HAH;y!l~~DfuN!}uKf8;2 zNer)t09%@%Cy8wlw`W30o1{0%$(XDUJ4l_pFR9X*@(aPRH&yY(8-JR9LhJ~-{$zGZ z8o5cOG=_m>ryQnF$x?4w29qnR*oFv)$XFCL4%)beiLiTlNP#g&iH%AkHF*rd^-oY&b_U;!QkT4-Yo|N{SPH zr`tdkZ#hq@oVxS1!8pfufi%8wO1~ke%5jl&r0(-V1H8?3i43Qw!myEQ#1l@YJe^_G zXbkuLMi##j4sXmk3|uA~c^9y(dwBa|g(UbFY$cNuCv2jLnjm5|(}n8ss@`*k=(Wts zjHtD*qmSd)lT3ILHtyp}Cw2PW$){}ISJ5WwXf`p<*t#Ekn_{E?-Z^_4C*A(dcGgjF zUTxO5kheRpIpbRG44$SH?Y?$sF5F#6C@R~FzI$7~Pcd3wRru+1bM*lwZcoJiBK63} zLyClHVHgL)74MK=z?}Vfhtw0Ln!e$nXM4 z!N>l~$R-#7&kqK~*Dt?86*pnPG^am+WR7NMVSBj}+&Ae5W`ViOpKOBw1pd8Z1#e^{ zYz63^-I|(NU%()Z8vsSTy6k$2`nBgNcx+;zoVUjFVyiS5ss=b#pn&*<9o&<90MIK5 zc+7OL#L2es@;d+qw-b1JVgCL{Isw#2 z!T`C8nj(<~uLFe~y#qYzQ3FKuP=H*+Ue;BwiESO%%S9k3jd2^@S-y$NCV#Jza7I$!#{P_nc7YTiebM3F%}2n zcA5bQ$G{?+grY2%ff7}K&8p=$TweCKV{F*i8~=-AIP0`nH;5sJ8Wx{9ru}gYiT$(e zqOIE(1tuq?=qAJa-@x*}YAIC6gvszfK zirx016f0Vn)tYzq)j9lp^fY$`;0AFccgKI;kZ!DV9%ITGtN3w6^^ao&h;dv9)-Rt( z1!f3UzZ~KGeok%j0g|@_w1R?eRh8!2PH+64x99!s7+7(0pT=5IksGQPERmn#ixO{B zaz_CM2^gg9UT4)bbw+36u;^5`+sz-xU{{)fCRBs4Fg;nDD55_5pb^w(cfGj^7W4k#|93$o+eyR4;7~vSi zF*QO@h?N;+CrWQQ6s!3MZ@jeta94++-6~CmddmTd85q#kg+Ums0LtT1fHgKK;O9F_i?PU9Ri$tgzFkFtk#C!omqDBFje$3#JIRJ_g)!U2@0QuJ_U||76 zX)uSOr9ZZy86r6<@7Jvwd$pm@shl#P>!Q|d5-lSyyIIC*npW5I%?V)74<6yz!oXr4 z3>hsPAXBit@wEpK=OP$t@f$$)BsONfv^j??v+#9;ebxT!qt>xagR8O1M*%bUY8gFM zdiM3VxdE{YfNVEcK_d?U-gQ6VcZC6h_V$u(6hPL>3^cw2h-oj3@Yhbd)70pA;tvs1 zj-h;jL5z!u8un}zKU0hIKF&+YH3ITf6&8|M>2-q4X%}ItsP+xK%byAI3@P%Pgo)Vi zHHj04Y>4isjuNqf5xU7=JxBgxd8!-5<@gXT>3qq7=|m)pOn^PLb9O)bTPe_+>A+kV zhXfh}l>#5Ew1fenY<PO+N>?f~ zl?1r%d%0P5AO$5t&eH1i$Mq8-$3mdT(yeNQg!6U&6rlQ)>B9D`Dt&v;V8mz4zJAg9 zf--0J*uO2xRB(y%uIpXxs{6_t1#!xxk@f5VfKsB$#a_$^&|K!8++7|6;^+8Cg8jhh z*GlW?)^!^6EZ~lYCSz>(>^k^2X}0e6uj+Je*Tt))wzBJG2y|cn6cvDJ3P3d;IxZpM zv?zkY`Q;}sAXQrd(%mbNSOST|R*XF8#3M}-X?H6_GU>yQA>=Z4QcAhK1O@AqOi4YS zG!Ge!LIKt!{rDrf6^Jtf-`LFyCixwHpPVnX;T3EOKYBiL2-l=G5)aDvlyNbAM6%~m z^5}_T1B945W#AMB97oN7q=+(6Pdj6!r|7A;>Q7YUXKMDt*Ajx7thSPByHtc(>RwiI z8KFP(f%oKIB3v1u#EZyH9eF>OYk!@&Ksy zYlR=PNdX|z^KOgj(}`9_wD?$O+v@N1>e~sVOQ>5L*in_IESz`yC@&rjHIzm+(gJIv z^TWx;Mfu0g-o_UZ>;8&5X`yl|u2CIxO>?;H_F%yj<3m(k@ ze`(=Y%oZ!C`<{!+^u6)#c-p2=`Dn}irnf1qgIxuB)@C3t!zwG3BeBq*+A`bbSD&Z) zR`aA_*1P%5?7VlMa0BX47ofm?*CBPw5eAWY_s+pZMd-qEq4;B!W560)+9?XkP4HxHC(`$dYE+(hm;%Ecb~|ucDH!j0j4z9?@351)c>F5!Z7Bwz`5ap47hncx_WgZdMt%5Y@}=cC@OV4y zgf4fIVMg1ORs1N(K9lkSpqH$bQ7q>J;=AA0Z+|xaHa-0c(sh?ArLG=4qo<>00uXOvg+%Tc7_ja2 z%X~-Aaxdz;4VUyqJ6IVuq*M3S=#wD2pHH`d-2ript{vyMOa%7e6F1Y&xWq#(-&aXz zqkYVj)N-PM8oU@`a{e^qso_|fio))kdN;W+-sxMu`CyLa``>5)z)*4np)UvQ zSXQh6c5^-eOH&zgqhK^ciij$M7uf?M;1n4W2m3TqdvLWBUBXB~jduL?~( zTFcd(4HPQ-^n1GyGnysRNm*SC3I&$=5rgOX#ugt z4^WN|u+zgc;l;Nd+2a zWmFW(>Rcoy4LVmV<*eE3Rl^3KrWp7sVIZYC@~}Q+1ws@m1TfNx0rDcgW=w=T^VzpP zy=&UMitLq|VHHz8`|zK+g?j+Ge2fN2+d+YF9Sq!G2vl}}#8&{kCbW4nSrsj9kp|M) z#fSG8FAgeM8dO7v)74$wpeUP|9yfQ>v?w3a8A{O10EN-Drl+$W4*y=`#<I%uh{k)7S+hK|Y08)Pn$dmwx{jPLO@~u7N=Zy(^%kw#S zhK-<8eey|XC=?WQ#-I+u)F31f7(lz!0?0Sq0EwE?#d+3Yh3z)VonW*B&k~zYL1*M&HlQ`hk+#olnGBLms@-U2AFn22zz=KOhp0R=&mFu-N+Yj;@78KBdA zD!zLQHRQkddEBu?q9z#EjwiDeK-P5uq`OiV_HY&kB=-ZN)pL%Drk`Ax3W$jnukb{F zWwX?*an^9!qMLjYDq;&DV|BVPnFSb7ICKM;0#iA2uYbEb-(1vqk-pIviN1A_&8StL zO78UImvcD*kA0Kj?SK}ze5VD-Pp{oXeBE5{z=WW-&{z9YPn+BElcxKl3o`;V&DID(H5{IdmaVLevn;)G$EDCSJdK9(t$f`e@IG1Z`)X3&McYSM0g1ic z`7&|mefEnjuVUxgDw6#oL)OyT-M)t>HR1|Yk)ru#pFR{HZJ7NQdjJ(XpfW=a@R8pX zt*#jRCQ|5+i#q7Xu<*m=Lr%h&`}SIU?y02^z|MmKY`+z8$k;l!432hNnCN|3vup0a>V$Vb6<%e`>0&jD6K9Z{!mKVmy1v~AICBK}v zx9)!Y6#P97NPeFQ5E8ZFw8*v7mE<^lds>$8x#b3G=q4UL)}E!)5srofP9uk2hVKBB zX&m7eL2Prpa6N!rNB|XCfNEiOil{-|$Dm1ComRv+nf{$IdErd}MT+u)d;h&bOBf9B z%eiydU(`rm6%Z3W3wp?VKq9a~_eS!%(~05DG<}yaap?}A%NGMcscUfkUcS7<4#0&8 zWYm#Kr1CO-fWiLV&gQ>Zhy|2i;(uqKcmbEQC6wll{EK+NDUpe9=YwI@n^}^KTXs()$7se1M{j zlJ|v%7vHw!lDZqcO3TF& zLy`a}j;U>E??Sy7z&?7#w$mek zq*h6s11%fIyVsp~@P~!mv$&H|Md5uT>CT!*^l^t+o2(Cq;MaW^M9B$ICJi1Yr{~Bj4GnEqd;y(9b6$@>rC0(crNXLL}hNs z*(Ft%|12`)YXeRi3W0zf_=bnoq=?wr%v2d_-3vFiUQ9o1b8RI>?fCF@_i>7{Q5naW zJ3JxF*Y^WEMdiJ3FvvvUBBrsVGraK+3%PgL3#%YgkoTS<=amgN%XCz8UIR!8M64?= z?0{NtHVeWS*_Y|~yj4$O|{0C|#x^)`F<98MuF-0lrO z4qk4$rGbT?$(85}`IY9qTKxrsm~O+6G72lA?n;4C;DbfQ(O;jB+m5TBlC^CVm>9u- z(2EOp&c0ffuV~5ERXRu(f z7yI@-qX~ccEelduV?{q|06-o`2TD0@Nt8Vd=yPpMUOCo=S}5sDa%Q2FX7G}@D3vAd ztFcyK<^vIBO$X;Wv&n2Ipcxs55X*)bqIt#v?1ABG8?WKasrNp-zobsKm2!+c`+O2N zj&Mpk0Iuf&Ko!0LfC{3`XJ-$<%V!Xei z5sNB`#{HWpcjhaB-Ye4)lABh^Vq?*{+8VeSJ@RS4k$NA_wT}O}RVHAsIh$V0lyr*Vb zDe^R|YxTQOtBd%V=pQle>ry%?>U~h?yNVMyOc{=1AzuMhsBNXBLYKHEGXuj3`gBL407LGM+}ylp zkRs8_o?0&1s*F>~l6GD|?U|JTYD}u`u8L0TBkeUka}qbelnDh5RsabzXFI?I=3$== zx!($qN@xLQj_v)CbI^gj7nHj_`{n}R4q}5RJ7!>~0E+%$3E(V<0{&fEFj)jeKFV}Q z!EyqeWm~JC(skv%In(!8b4$w|%HLN;Ji2O-DI;8X{XuP?b@pBr6`D>{GQC;{;C7+~ zxHXP54vq5r71YBYo%WxO*J)sVo(yqHeLYmK;b^kpS(P@p)M!MTzVVzU-(sgJWhmld z<59)ulU7%@QPg@aS;hmo_xo`2&#rwc*9OP?w*gUMAHat$DA2_2B*Mm_>2NzxCGK^1 zGWpn36YbIJRb=G+QuPNq6NQdDcDyucZAtS9LFStiMotB0AkDa!3zZeHi ziMo0oqN$AYEyYS1LU7o@BmNa&I_;JEidUA`SXFPfR6+zNz$v*VN9LLr`)0PV#AXhzcQS&ma&hT#(;b=Z73&lj1nN4wn<)a^!! z(%cYU*TI58qR{~O66WTBi&Ofv0%An(UoFZcVFqwkyFAqK5T9*fWC*?0q9d)&pg@@TRdp0RjNm_#-Ob}xwU9{nn$h9 z;I1hjB!I* znhFjh_SFK6!wcCieGbY4?Lti0Yi~T0Jt}wGgiDn6ay)B&Mt8qil}MfBdQJw6*&jb; z8X(Tq+BV^nGPl8z)>#f_T(D6YUDdu>>0x$JUwLLZ&<`If_ULJ^} zj2E(HIP`^H$;p!z7t*_8tVLe6>63dVb-SqC#a@%IryN{mSd@iIynf_P?Y$6VnSqvi z6BbN6yy9^nkt_4&EuP-X!(-J}EBDqYpK*A<67_G9{eLZN|8vOqpF_U?zlVHRsbG`D z2rGLNVEL!L|K-G%$(EJM^4cnE82*OSzg{z!QU8Z$KBoaOO#$l_KUJZvfm3%1%M)$c zVupoe$8wH^289r|t7(!-`$g=UQWlCc@ed4vyq0wwB3gJ2tdw3jO-^zE2^Bf?nc29X z6eG#KNJ;bY%WxS6q8Mq53BMkj$CL@OmJ`2FBBdWD%Ueyz-W2_2N|%H3{&MQG=6kJd zGv()0?v9cHvvu>IzKg)j9p9M_ka`{_|4Q9H^(sP!M6pcUVJ4v0rrz+quH(!#YGkiv zt@5Tu3wvmeeS@L%CHXbAif`zUP3`>UxyMxQxV_~Q4uKNwidjeRh1pU%HEEw=Y}!8SwR~RCWc=!CFgjkgX5mY}=yM#8kFqX8$}e zcmX#zd*Jv=tMv!ho9yGrn_K6xg}S@;Au9-^V_cK~rBls_JRe$#f{NB9PfVTA#r=+Z zrt9SON38PkC83J$32b@7o(WNP;%aw_LwsrV00Pp7Jf4!+4Q1hGwS5ZV_76(FF9p-~ zYdnai|H2g)*Ct!K5%OrjZs~P{{Lb{dM-|E0s+0#brLf51bz-k)o9s%-U0H0ql2-q=G`Bx3qHGc&>F98-^DTs7!s_|*-W_$d{Q z>C$@bV(0peL(IO;iX~aiE8f~#7oJm;m}ty~5?NG`7Fyct507ZPU6_S;x-IEa_1_wv zYuBJ_dy7qm8SPaqgu*XaQT_5Wa(083b>Y9<=NtEqT}pL(C&%x2;Y_r?zGYOM1uthDrg$#*w;hF<^5CL{ zu9WBE0&_u5vd9&o1VpGJ`3@3OB(S&dI??o8Xxwt9k2}*!m|7VTs!(Q&-ISA2)Up0P z%ip*D%Yh?vYkt%_XFKVsevU2i=g=uT|0CC|TL1U)h){*gn~m*Xqp=DO&eRnp#Rif* zMUE6lZPf?Z0`IaNE|2QQ9Fr_`$()~@4}CbIOxSF$q@*@%9Bb+J{@4)c($ePg1`oCK zB!QI9z>R2*@XPnWyUQilB`$`6A8)E8yJtn6jz_qcwsOWi;CRv#Cn62n<4R(Zs1f}S zy3%H4Z++$G&vV|V^#8mG^j}gI(?tHNW4yrw*Mny`um7S}dc3aP_Oor9>kh?pi}_os z`JTVYSpDJj=ibLVig`%a`_j+P9P5`}2sWSH=FTan-e@$gwcRAiPG9?_;~k&>&O4U5 zo|in8$H!O{PqVulI6%|kruz;3`d}p=nF$t6h?&_$TuEy#{JiqlD)dqeeH9ryj1>v1 zRF5-gWxpbP?-M~bxlV<-6J4a*NO~u!GNuN$5GTGfktCrd9s&E)$Ru2P9%iTh)k*Pa zhS#+8a^dAP5^K@lNm-?}2ME6QD9ZBKjY^#96OW>pXnhZ5lhGTlS?eZ=je7sM$gijP z9UWtIX@XFn-yzj{xVJY?+h#3e1P%TTi|-G}{V&_-l$JfwNgC|+ed#Rp1pJ9?g!0ej z^Z&0`35V& zLKm}>#>`IswLPx2FFu|6gIP;nPhEjTdZ#-*_W&)HI_8N=={5J;LENy3*UIv%sFbGD z;Xfw(jfr*6@LjY%rD_^DO|fX)7QZyesa249yUPwK`Ej1584$0&S|prYk0Yl=uB=23 zm*(?2f3A&YuT?IsU!l1W$*@rB>2PCSJ_;Yyp=i|Km(r-Hjx1(b$ia1V%&0)q`6!{V zcHx*~U#)#OK3#NStfCAvehfFBONX12+`3k$bN2C--+Znl_+E35u$R%0vCfGvq0-r9 z`0JvW?LzM>lLo0>eeViu3+rM-fdbiuqB%zn)S3px*$K{AId|t~>PAkNInHZyrz6x( zeV>_^hBMo)6VfdY1zEl=S%3H7B$@c6R$E`xlIg_RBKy&~V6^V~qt`L&Ds+y(!}#>f zGm~MQP4IOjyy4o{mE`+pRnon7w(%}5jl<6;F_+|u^SagWv(J8bNYt_YO~+Sw9fF&F zD=k-3+$yMDdP>V?-o4=ljJT~A&HZNQ8Ijz@bUiW|_c$LwtKB9a_i`#C&U%bvhjkc? z$m=F7B}n4S{Z%^jx~VOv1fbCWOk97`fd84e{xfm?pG;gcc5qwyxpS%n-zgvCYUjlZ zsxfc)AiTtX`H~thV)ZhY&2-uCn`+wTuUyxh?OoAVZ+EY9tE={}scn-Eu5%Ft{DuZM z+bb$nz6In-|>P6zs*n}Fg08xs3z_fEk9<6 z8YdcbZs+%k7eT0+3f42-85G*O`+o@dvpHWh+MjgcY6*lAIyo40{45b_?@1+QIbUe$n!5P({PNN2oQzVFtAzAk>M`mntkRm> zNc463vFa|IQhIO6EK$tk)Dvi=F9+_gOWDV(dGN_J!710n-Cw9T2+QgrCa&(U2}xT| zWxw9iz%rW)zV+P@oiQ;_F2z6?ErY5e1l14Qf zBmY2_CZ`Qsa~PjZ_{3{X<)PtUWskRd=CeHMot5X?1UK9v|65!85C8ao%0K!s01>zY zC;$Tfc|ef=(l8_dApht@L?aSHqaaFjxBx)@=RPXpHQGNKQ4Vk*NZ=vjnvST!MQB2V z{)Es35EOup&;bZd_)qM^g zL1gMKP?c!-9W$o$c1A(& XsPV8i_p-L4^|kl1qm`9cRs;V7ISnA) literal 0 HcmV?d00001 -- 2.39.5