More elegant serialization of blobs in customdata using the pickle
[blender-addons-contrib.git] / render_auto_save.py
index 24a44b6dd4be911ef111dd3243a7da3f4dd1119f..48e7c5fb5a0ac52871503a9b57aecb936177cfd3 100644 (file)
@@ -1,15 +1,44 @@
+# Simplified BSD License
+#
+# Copyright (c) 2012, Florian Meyer
+# tstscr@web.de
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+#    list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+#    this list of conditions and the following disclaimer in the documentation
+#    and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
 bl_info = {
     "name": "Auto Save Render",
     "author": "tstscr",
     "version": (1, 0),
-    "blender": (2, 6, 3),
+    "blender": (2, 63, 0),
     "location": "Rendertab -> Render Panel",
     "description": "Automatically save the image after rendering",
     "warning": "",
-    "wiki_url": "",
-    "tracker_url": "",
+    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
+        "Scripts/Render/Auto_Save",
+    "tracker_url": "https://developer.blender.org/T32491",
     "category": "Render"}
-###########################################################################
+
+
 import bpy
 from bpy.props import BoolProperty, EnumProperty
 from bpy.app.handlers import persistent
@@ -30,13 +59,13 @@ def auto_save_render(scene):
     if format == 'OPEN_EXR_MULTILAYER': extension = '.exr'
     if format == 'JPEG': extension = '.jpg'
     if format == 'PNG': extension = '.png'
-    
+
     blendname = basename(bpy.data.filepath).rpartition('.')[0]
     filepath = dirname(bpy.data.filepath) + '/auto_saves'
-    
+
     if not exists(filepath):
         mkdir(filepath)
-        
+
     if scene.auto_save_subfolders:
         filepath = join(filepath, blendname)
         if not exists(filepath):
@@ -46,7 +75,7 @@ def auto_save_render(scene):
     files = [f for f in listdir(filepath) \
             if f.startswith(blendname) \
             and f.lower().endswith(('.png', '.jpg', '.jpeg', '.exr'))]
-    
+
     highest = 0
     if files:
         for f in files:
@@ -55,14 +84,14 @@ def auto_save_render(scene):
             if suffix:
                 if int(suffix[-1]) > highest:
                     highest = int(suffix[-1])
-    
+
     save_name = join(filepath, blendname) + '_' + str(highest+1).zfill(3) + extension
 
     image = bpy.data.images['Render Result']
     if not image:
         print('Auto Save: Render Result not found. Image not saved')
         return
-    
+
     print('Auto_Save:', save_name)
     image.save_render(save_name, scene=None)
 
@@ -71,7 +100,7 @@ def auto_save_render(scene):
 ###########################################################################
 def auto_save_UI(self, context):
     layout = self.layout
-    
+
     split=layout.split(percentage=0.66, align=True)
     row = split.row()
     row.prop(context.scene, 'save_after_render', text='Auto Save', toggle=False)
@@ -79,7 +108,7 @@ def auto_save_UI(self, context):
     #split=layout.split()
     row=split.row()
     row.prop(context.scene, 'auto_save_format', text='as', expand=False)
-    
+
 def register():
     bpy.types.Scene.save_after_render = BoolProperty(
                     name='Save after render',
@@ -99,7 +128,7 @@ def register():
                     description='Save into individual subfolders per blend name')
     bpy.app.handlers.render_post.append(auto_save_render)
     bpy.types.RENDER_PT_render.append(auto_save_UI)
-    
+
 def unregister():
     del(bpy.types.Scene.save_after_render)
     del(bpy.types.Scene.auto_save_format)