Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'blenderkit/image_utils.py')
-rw-r--r--blenderkit/image_utils.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/blenderkit/image_utils.py b/blenderkit/image_utils.py
new file mode 100644
index 00000000..b2ade804
--- /dev/null
+++ b/blenderkit/image_utils.py
@@ -0,0 +1,84 @@
+import bpy
+import numpy
+import os
+
+def get_orig_render_settings():
+ rs = bpy.context.scene.render
+ ims = rs.image_settings
+
+ vs = bpy.context.scene.view_settings
+
+ orig_settings = {
+ 'file_format': ims.file_format,
+ 'quality': ims.quality,
+ 'color_mode': ims.color_mode,
+ 'compression': ims.compression,
+ 'view_transform': vs.view_transform
+ }
+ return orig_settings
+
+
+def set_orig_render_settings(orig_settings):
+ rs = bpy.context.scene.render
+ ims = rs.image_settings
+ vs = bpy.context.scene.view_settings
+
+ ims.file_format = orig_settings['file_format']
+ ims.quality = orig_settings['quality']
+ ims.color_mode = orig_settings['color_mode']
+ ims.compression = orig_settings['compression']
+
+ vs.view_transform = orig_settings['view_transform']
+
+
+def img_save_as(img, filepath='//', file_format='JPEG', quality=90, color_mode='RGB', compression=15):
+ '''Uses Blender 'save render' to save images - BLender isn't really able so save images with other methods correctly.'''
+
+ ors = get_orig_render_settings()
+
+ rs = bpy.context.scene.render
+ ims = rs.image_settings
+ ims.file_format = file_format
+ ims.quality = quality
+ ims.color_mode = color_mode
+ ims.compression = compression
+
+ img.save_render(filepath=bpy.path.abspath(filepath), scene=bpy.context.scene)
+
+ set_orig_render_settings(ors)
+
+
+def generate_hdr_thumbnail():
+ scene = bpy.context.scene
+ ui_props = scene.blenderkitUI
+ hdr_image = ui_props.hdr_upload_image#bpy.data.images.get(ui_props.hdr_upload_image)
+
+ base, ext = os.path.splitext(hdr_image.filepath)
+ thumb_path = base + '.jpg'
+ thumb_name = os.path.basename(thumb_path)
+
+ max_thumbnail_size = 2048
+ size = hdr_image.size
+ ratio = size[0] / size[1]
+
+ imageWidth = size[0]
+ imageHeight = size[1]
+ thumbnailWidth = min(size[0], max_thumbnail_size)
+ thumbnailHeight = min(size[1], int(max_thumbnail_size / ratio))
+
+ tempBuffer = numpy.empty(imageWidth * imageHeight * 4, dtype=numpy.float32)
+ inew = bpy.data.images.new(thumb_name, imageWidth, imageHeight, alpha=False, float_buffer=False)
+
+ hdr_image.pixels.foreach_get(tempBuffer)
+
+ inew.filepath = thumb_path
+ inew.colorspace_settings.name = 'Linear'
+ inew.pixels.foreach_set(tempBuffer)
+
+ bpy.context.view_layer.update()
+ if thumbnailWidth < imageWidth:
+ inew.scale(thumbnailWidth, thumbnailHeight)
+
+ img_save_as(inew, filepath=inew.filepath)
+
+