Fix: Operator, app template and benchmarking script errors after media type

Always set the media type before the file format.

Ref #142955

Pull Request: https://projects.blender.org/blender/blender/pulls/143433
This commit is contained in:
Brecht Van Lommel
2025-07-28 11:55:11 +02:00
committed by Brecht Van Lommel
parent fa2062ee96
commit eb8dc8f535
8 changed files with 14 additions and 3 deletions

View File

@@ -2222,15 +2222,19 @@ class NWSaveViewer(bpy.types.Operator, ExportHelper):
'.tiff': 'TIFF', '.tiff': 'TIFF',
'.tif': 'TIFF'} '.tif': 'TIFF'}
basename, ext = path.splitext(fp) basename, ext = path.splitext(fp)
old_render_format = context.scene.render.image_settings.file_format image_settings = context.scene.render.image_settings
old_media_type = image_settings.media_type
old_file_format = image_settings.file_format
old_tree_type = context.space_data.tree_type old_tree_type = context.space_data.tree_type
context.scene.render.image_settings.file_format = formats[self.filename_ext] image_settings.media_type = 'IMAGE'
image_settings.file_format = formats[self.filename_ext]
context.area.type = "IMAGE_EDITOR" context.area.type = "IMAGE_EDITOR"
context.area.spaces[0].image = bpy.data.images['Viewer Node'] context.area.spaces[0].image = bpy.data.images['Viewer Node']
context.area.spaces[0].image.save_render(fp) context.area.spaces[0].image.save_render(fp)
context.area.type = "NODE_EDITOR" context.area.type = "NODE_EDITOR"
context.space_data.tree_type = old_tree_type context.space_data.tree_type = old_tree_type
context.scene.render.image_settings.file_format = old_render_format image_settings.media_type = old_media_type
image_settings.file_format = old_file_format
return {'FINISHED'} return {'FINISHED'}

View File

@@ -112,6 +112,7 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern):
scene.render.film_transparent = True scene.render.film_transparent = True
# TODO: define Cycles world? # TODO: define Cycles world?
scene.render.image_settings.media_type = 'IMAGE'
scene.render.image_settings.file_format = 'PNG' scene.render.image_settings.file_format = 'PNG'
scene.render.image_settings.color_depth = '8' scene.render.image_settings.color_depth = '8'
scene.render.image_settings.color_mode = 'RGBA' scene.render.image_settings.color_mode = 'RGBA'

View File

@@ -25,6 +25,7 @@ def update_factory_startup_ffmpeg_preset():
for scene in bpy.data.scenes: for scene in bpy.data.scenes:
render = scene.render render = scene.render
render.image_settings.media_type = 'VIDEO'
render.image_settings.file_format = 'FFMPEG' render.image_settings.file_format = 'FFMPEG'
if preset_filepath: if preset_filepath:

View File

@@ -56,6 +56,7 @@ def render(shading_system):
set_shading_system(scene, shading_system) set_shading_system(scene, shading_system)
scene.render.filepath = "%s/test_renders/%s_%s" % (test_dir, filename, shading_system) scene.render.filepath = "%s/test_renders/%s_%s" % (test_dir, filename, shading_system)
scene.render.image_settings.media_type = 'IMAGE'
scene.render.image_settings.file_format = 'PNG' scene.render.image_settings.file_format = 'PNG'
scene.render.use_file_extension = True scene.render.use_file_extension = True

View File

@@ -24,6 +24,7 @@ def _run(args):
scene = bpy.context.scene scene = bpy.context.scene
scene.render.engine = 'CYCLES' scene.render.engine = 'CYCLES'
scene.render.filepath = args['render_filepath'] scene.render.filepath = args['render_filepath']
scene.render.image_settings.media_type = 'IMAGE'
scene.render.image_settings.file_format = 'PNG' scene.render.image_settings.file_format = 'PNG'
scene.cycles.device = 'CPU' if device_type == 'CPU' else 'GPU' scene.cycles.device = 'CPU' if device_type == 'CPU' else 'GPU'

View File

@@ -73,6 +73,7 @@ class ImBufTest(AbstractImBufTest):
def _save_exr(self, img, out_exr_path): def _save_exr(self, img, out_exr_path):
scene = bpy.data.scenes[0] scene = bpy.data.scenes[0]
image_settings = scene.render.image_settings image_settings = scene.render.image_settings
image_settings.media_type = 'IMAGE'
image_settings.file_format = "OPEN_EXR" image_settings.file_format = "OPEN_EXR"
image_settings.color_mode = "RGBA" image_settings.color_mode = "RGBA"
image_settings.color_depth = "32" image_settings.color_depth = "32"

View File

@@ -33,6 +33,7 @@ def render_gl(context, filepath, shade):
scene = context.scene scene = context.scene
render = scene.render render = scene.render
render.filepath = filepath render.filepath = filepath
render.image_settings.media_type = 'IMAGE'
render.image_settings.file_format = 'PNG' render.image_settings.file_format = 'PNG'
render.image_settings.color_mode = 'RGB' render.image_settings.color_mode = 'RGB'
render.use_file_extension = True render.use_file_extension = True

View File

@@ -953,6 +953,7 @@ def render_output(scene, bounds, filepath):
scene.collection.objects.link(camera) scene.collection.objects.link(camera)
render = scene.render render = scene.render
render.image_settings.media_type = 'IMAGE'
render.image_settings.file_format = 'JPEG' render.image_settings.file_format = 'JPEG'
render.image_settings.color_depth = '8' render.image_settings.color_depth = '8'
render.image_settings.color_mode = 'RGB' render.image_settings.color_mode = 'RGB'