On 2/9/2011 4:29 PM, Benjamin Root wrote:
On Wed, Feb 9, 2011 at 1:50 AM, Eric Firing <efir...@hawaii.edu
<mailto:efir...@hawaii.edu>> wrote:
On 02/08/2011 02:39 PM, Christoph Gohlke wrote:
>
>
> Please consider the attached patch for the _image.frombyte
function. It
> avoids temporary copies in case of non-contiguous input arrays.
Copying
> a 1024x1024 slice out of a contiguous 4096x4096 RGBA or RGB array is
> about 7x faster (a common case for zooming/panning). Copying
contiguous
> RGB input arrays is ~2x faster. Tested on win32-py2.7.
>
> Christoph
>
Thank you!
Looks good, speeds up zooming and panning on large images as advertised.
An 8000x8000 image is actually manageable now.
interpolation='nearest' is still very slow until the image is
substantially zoomed, but everything is quite quick with other
interpolation styles. The slowness of 'nearest' looks like a basic
characteristic of the implementation.
I committed the patch in 8966.
Before that I found and committed a big speed-up in Normalize.
Eric
Bug Report:
At some point between the recent revision and r8934, setting the alpha
value to anythhing but None will cause the image to not show. I suspect
it has something to do with some of the recent revisions. Maybe the
alpha values were being converted into an integer, causing them to be
zero? Then again, even setting alpha to 1 will cause the image to
disappear.
Ideas? Thoughts? I included an example script below.
Ben Root
Example script:
import numpy as np
import matplotlib.pyplot as plt
z = np.random.random((40, 50))
fig = plt.figure()
ax = fig.add_subplot(1, 2, 1)
ax.imshow(z, alpha=1.0)
ax.set_title('Blank!')
ax = fig.add_subplot(1, 2, 2)
ax.imshow(z, alpha=None)
ax.set_title("Not Blank")
plt.show()
This should fix it:
Index: lib/matplotlib/colors.py
===================================================================
--- lib/matplotlib/colors.py (revision 8967)
+++ lib/matplotlib/colors.py (working copy)
@@ -49,6 +49,7 @@
'chartreuse' are supported.
"""
import re
+import math
import numpy as np
from numpy import ma
import matplotlib.cbook as cbook
@@ -547,6 +548,8 @@
if alpha is not None:
alpha = min(alpha, 1.0) # alpha must be between 0 and 1
alpha = max(alpha, 0.0)
+ if bytes:
+ alpha = int(math.floor(alpha*255.9999999))
if (lut[-1] == 0).all():
lut[:-1, -1] = alpha
# All zeros is taken as a flag for the default bad
Christoph
Index: lib/matplotlib/colors.py
===================================================================
--- lib/matplotlib/colors.py (revision 8967)
+++ lib/matplotlib/colors.py (working copy)
@@ -49,6 +49,7 @@
'chartreuse' are supported.
"""
import re
+import math
import numpy as np
from numpy import ma
import matplotlib.cbook as cbook
@@ -547,6 +548,8 @@
if alpha is not None:
alpha = min(alpha, 1.0) # alpha must be between 0 and 1
alpha = max(alpha, 0.0)
+ if bytes:
+ alpha = int(math.floor(alpha*255.9999999))
if (lut[-1] == 0).all():
lut[:-1, -1] = alpha
# All zeros is taken as a flag for the default bad
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users