[Checkins] SVN: z3c.image/trunk/src/z3c/image/ cache results

Bernd Dorn bernd.dorn at fhv.at
Thu Aug 31 04:11:33 EDT 2006


Log message for revision 69898:
  cache results

Changed:
  U   z3c.image/trunk/src/z3c/image/image.py
  U   z3c.image/trunk/src/z3c/image/proc/adapter.py

-=-
Modified: z3c.image/trunk/src/z3c/image/image.py
===================================================================
--- z3c.image/trunk/src/z3c/image/image.py	2006-08-31 07:31:43 UTC (rev 69897)
+++ z3c.image/trunk/src/z3c/image/image.py	2006-08-31 08:11:27 UTC (rev 69898)
@@ -30,7 +30,4 @@
 
     def getImageSize(self):
         return self.size
-
-
-        
     

Modified: z3c.image/trunk/src/z3c/image/proc/adapter.py
===================================================================
--- z3c.image/trunk/src/z3c/image/proc/adapter.py	2006-08-31 07:31:43 UTC (rev 69897)
+++ z3c.image/trunk/src/z3c/image/proc/adapter.py	2006-08-31 08:11:27 UTC (rev 69898)
@@ -9,11 +9,11 @@
 from interfaces import IProcessableImage
 from PIL import ImageFile
 from types import StringType
+from zope.app.cache.ram import RAMCache
 
 # see http://mail.python.org/pipermail/image-sig/2003-May/002228.html
 ImageFile.MAXBLOCK = 1024*1024
-import thread
-lock = thread.allocate_lock()
+imgCache = RAMCache()
 
 class ProcessableImage(object):
 
@@ -59,16 +59,16 @@
         return img
 
     def rotate(self, degrees):
-        self.cmds.append(('rotate',[degrees],{}))
+        self.cmds.append(('rotate',(degrees,),{}))
 
     def crop(self, croparea):
         croparea = map(int,croparea)
-        self.cmds.append(('crop',[croparea],{}))
+        self.cmds.append(('crop',(croparea,),{}))
     
     def resize(self, size):
         """See IPILImageResizeUtility"""
         size = map(int,size)
-        self.cmds.append(('resize',[size],{}))
+        self.cmds.append(('resize',(size,),{}))
 
     def reset(self):
         self.cmds=[]
@@ -77,11 +77,17 @@
         """processes the command queue and returns the image"""
         if not self.cmds:
             return self.context
+        key = {'cmds':str(self.cmds)}
+        img = imgCache.query(self.context , key)
+        if img is not None:
+            img.data.seek(0)
+            return img
         pimg = self.getPILImg()
         for name,args,kwords in self.cmds:
             func = getattr(pimg,name)
             pimg = func(*args,**kwords)
-        img = self._toImage(pimg, quality=quality,optimize=optimize)
+        img = self._toImage(pimg, quality=quality, optimize=optimize)
+        imgCache.set(img, self.context, key=key)
         return img
                         
 



More information about the Checkins mailing list