remove storing data in object

This commit is contained in:
clement.hector 2022-01-21 11:00:15 +01:00
parent 0724f70eee
commit 797a1615a3

View file

@ -24,40 +24,43 @@ class ExtractReview(openpype.api.Extractor):
make_image_sequence = None
def process(self, instance):
self.staging_dir = self.staging_dir(instance)
self.log.info("Outputting image to {}".format(self.staging_dir))
staging_dir = self.staging_dir(instance)
self.log.info("Outputting image to {}".format(staging_dir))
self.stub = photoshop.stub()
stub = photoshop.stub()
self.output_seq_filename = os.path.splitext(
self.stub.get_active_document_name())[0] + ".%04d.jpg"
stub.get_active_document_name())[0] + ".%04d.jpg"
new_img_list = src_img_list = []
if self.make_image_sequence:
src_img_list = self._get_image_path_from_instances(instance)
if self.make_image_sequence and src_img_list:
new_img_list = self._copy_image_to_staging_dir(src_img_list)
new_img_list = self._copy_image_to_staging_dir(
staging_dir,
src_img_list
)
else:
layers = self._get_layers_from_instance(instance)
new_img_list = self._saves_flattened_layers(layers)
new_img_list = self._saves_flattened_layers(staging_dir, layers)
instance.data["representations"].append({
"name": "jpg",
"ext": "jpg",
"files": new_img_list,
"stagingDir": self.staging_dir,
"stagingDir": staging_dir,
"tags": self.jpg_options['tags']
})
ffmpeg_path = openpype.lib.get_ffmpeg_tool_path("ffmpeg")
instance.data["stagingDir"] = self.staging_dir
instance.data["stagingDir"] = staging_dir
# Generate thumbnail.
thumbnail_path = os.path.join(self.staging_dir, "thumbnail.jpg")
thumbnail_path = os.path.join(staging_dir, "thumbnail.jpg")
self.log.info(f"Generate thumbnail {thumbnail_path}")
args = [
ffmpeg_path,
"-y",
"-i", os.path.join(self.staging_dir, self.output_seq_filename),
"-i", os.path.join(staging_dir, self.output_seq_filename),
"-vf", "scale=300:-1",
"-vframes", "1",
thumbnail_path
@ -68,18 +71,18 @@ class ExtractReview(openpype.api.Extractor):
"name": "thumbnail",
"ext": "jpg",
"files": os.path.basename(thumbnail_path),
"stagingDir": self.staging_dir,
"stagingDir": staging_dir,
"tags": ["thumbnail"]
})
# Generate mov.
mov_path = os.path.join(self.staging_dir, "review.mov")
mov_path = os.path.join(staging_dir, "review.mov")
self.log.info(f"Generate mov review: {mov_path}")
img_number = len(new_img_list)
args = [
ffmpeg_path,
"-y",
"-i", os.path.join(self.staging_dir, self.output_seq_filename),
"-i", os.path.join(staging_dir, self.output_seq_filename),
"-vf", "pad=ceil(iw/2)*2:ceil(ih/2)*2",
"-vframes", str(img_number),
mov_path
@ -90,7 +93,7 @@ class ExtractReview(openpype.api.Extractor):
"name": "mov",
"ext": "mov",
"files": os.path.basename(mov_path),
"stagingDir":self.staging_dir,
"stagingDir": staging_dir,
"frameStart": 1,
"frameEnd": img_number,
"fps": 25,
@ -103,7 +106,7 @@ class ExtractReview(openpype.api.Extractor):
instance.data["frameEnd"] = img_number
instance.data["fps"] = 25
self.log.info(f"Extracted {instance} to {self.staging_dir}")
self.log.info(f"Extracted {instance} to {staging_dir}")
def _get_image_path_from_instances(self, instance):
img_list = []
@ -121,11 +124,11 @@ class ExtractReview(openpype.api.Extractor):
return img_list
def _copy_image_to_staging_dir(self, img_list):
def _copy_image_to_staging_dir(self, staging_dir, img_list):
copy_files = []
for i, img_src in enumerate(img_list):
img_filename = self.output_seq_filename %i
img_dst = os.path.join(self.staging_dir, img_filename)
img_filename = self.output_seq_filename % i
img_dst = os.path.join(staging_dir, img_filename)
self.log.debug(
"Copying file .. {} -> {}".format(img_src, img_dst)
@ -144,21 +147,22 @@ class ExtractReview(openpype.api.Extractor):
return layers
def _saves_flattened_layers(self, layers):
img_filename = self.output_seq_filename %0
output_image_path = os.path.join(self.staging_dir, img_filename)
def _saves_flattened_layers(self, staging_dir, layers):
img_filename = self.output_seq_filename % 0
output_image_path = os.path.join(staging_dir, img_filename)
stub = photoshop.stub()
with photoshop.maintained_visibility():
if layers:
# Hide all other layers.
extract_ids = set([ll.id for ll in self.stub.
extract_ids = set([ll.id for ll in stub.
get_layers_in_layers(layers)])
self.log.debug("extract_ids {}".format(extract_ids))
for layer in self.stub.get_layers():
for layer in stub.get_layers():
# limit unnecessary calls to client
if layer.visible and layer.id not in extract_ids:
self.stub.set_visible(layer.id, False)
stub.set_visible(layer.id, False)
self.stub.saveAs(output_image_path, 'jpg', True)
stub.saveAs(output_image_path, 'jpg', True)
return img_filename