From e077c13bafd0d139dd2816acdad86b10c38b7a48 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 1 Jul 2016 23:36:51 -0400 Subject: [PATCH] FIX: handle non-native endian images In cbook.safe_mask_invalid also ensure that the data is in native byte order. close #6671 closes #6394 --- lib/matplotlib/cbook.py | 7 ++++++ .../test_image/imshow_endianess.png | Bin 0 -> 5320 bytes lib/matplotlib/tests/test_image.py | 21 +++++++++++++++--- 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png diff --git a/lib/matplotlib/cbook.py b/lib/matplotlib/cbook.py index 8fef27ac0165..ab0cc8edec27 100644 --- a/lib/matplotlib/cbook.py +++ b/lib/matplotlib/cbook.py @@ -1505,6 +1505,13 @@ def issubclass_safe(x, klass): def safe_masked_invalid(x, copy=False): x = np.array(x, subok=True, copy=copy) + if not x.dtype.isnative: + # Note that the argument to `byteswap` is 'inplace', + # thus if we have already made a copy, do the byteswap in + # place, else make a copy with the byte order swapped. + # Be explicit that we are swapping the byte order of the dtype + x = x.byteswap(copy).newbyteorder('S') + try: xm = np.ma.masked_invalid(x, copy=False) xm.shrink_mask() diff --git a/lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png b/lib/matplotlib/tests/baseline_images/test_image/imshow_endianess.png new file mode 100644 index 0000000000000000000000000000000000000000..148acf1251743f8b2f5a1d6916854c31f0bcc76c GIT binary patch literal 5320 zcmeHLSyU5Q0xgghTp&75tF)RpdPeN=ptPtUTU?NcG+|^6s0cwt5NL=_!kP})FgC5C zk-?2!$uxnWNehG}1Tfkv3Q0hguq6>$0whI*kOUHwOa;1s`pi#{%p5Y!B)?MdZ+Mk529WgYU?Ls|R41?CR_5 z?$b(^b+-pu6KCw361zc@y{DOeh1U5qE;4(D;Nl=kEFK^Y*Rr!tN8s`Ja_GNIi+bIl z!fvmb1putrybk~_tu-+PfS)Z^0Ki6%OVG2gOw9n`hm{)vU|%|50sv zFr2B;4>J3=eZY>_+fD5zOKrCCmnUNLRmD!^n-~fUxfYC4_FtB_a}>#$Sw~9JUwoDGhbfBtMd$6KI;?lGS`P3pcuRWi?!CJ$*?laloNR5LTuHoCYrL^q4 zfOVs+qud?K4MDU-wq&aNvUYQz1C5^K`UiPSwg6(c@JO?NCXRs{MCc^TY2#fcwQ5tU*ows78l@YD0fAd9#x0tiOhz zn3||0+r?_pdEaO)&UPrZrP=9{iY8V)s+46&k0tR5Iz0`lP2T*!h~T}TUi0AEIKP6@ z+eAgi31qcWnz5J6sw6l%$vNistqD3ZwNOzcC{xgAdo($%32H0Z6<%#6%h_p1__;r8 z4P~~f^W`!lTF!!h$yzT?E}1`tA7zq&N}@EtKO)x9iQryixCCJJV`scms9lgIKlZ|@mdCBEFUXm`}HSSD3couN(dpA13jMq%x5%|&Tv3DC( zpB^t>)lK~ zG5eb%Nq}12IXqV1_>dz^3gJ;S2%kd|ZheDwo`V4y2@wTm-kN~HM4E>^TUE{<)tpjU zKcaoHzPWEe#|e2zB37K3oz_O8r1{KW0Qi~#F8WDG#u|dad?_vgY;4-mo^hAVBy0+{ zVJUQo4q+1xmk>1|itwVoD*JWZAzjhDE5(*jZy<%LuP$wf7MEl)MkT3aaIMNT7;e(1WD*!X-y5Y z@nOy~b4VCtqGI9*qPpxW5HWJD@^XTj46aW-lI@*lJ13%3{V9;omoH!2a1ei6cpmaL2_OO2WkLFliGu@S9QhC+G^o=n>mM7Hf#9bXEsAdEaqey6f~m z)gz8eZrZeTGY||3y19z9JUA`Dg~VR%gAh;lyzWp-Cj}zt^}VXCE&uQoQ3eLL9sjsx z%$(w`vUeEk5@j_$gsmCggzuRWH6I{|-UcI`a08ivMzL+HMYu~qh&w!DQoo;(9bU@} z>#`K(Gvu+qhxpch+O{&c0-STuc1B|OmffKEZ>dS+!SZN=D0w_Eou>_s!4gD0FX%@5 z)K8_3u&H6=?h@ULK3`*JaiC7#m|Kc3RXSvNf{=_rWZ@g7l7*i(n~&Ax+%O<@kuCtu3XCu^k~U)WA-q>&XsX zScQ~W1f@`@b}P;7Fp52+7V4kRJd=NT2yRXna^*phzb|zf5qP_1aq4~yMmN~g(;`S> zmmNjM6JtiCbSvc8W8v{YYfUx>RI(;`?*$l)Elgt!(&TX%6!SA{BbBYUVc*wBlk5#@ zi@K8QzbpodRDH($Exfk@JVDHr5RyWt)$*+(Eh7!5@lksVx+o2O#r$HUf8'), **kwargs) + + +if __name__ == '__main__': + nose.runmodule(argv=['-s', '--with-doctest'], exit=False) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy