From 4c883b469df94a832a54d8b44d87d0b00cbdfee5 Mon Sep 17 00:00:00 2001 From: I-Chenn Date: Fri, 12 May 2023 17:21:43 +0800 Subject: [PATCH 1/5] Add image_ratio argument to save_rendered_view --- carta/session.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/carta/session.py b/carta/session.py index 0ba2e22..7723cd7 100644 --- a/carta/session.py +++ b/carta/session.py @@ -799,8 +799,8 @@ def set_cursor(self, x, y): # SAVE IMAGE - @validate(NoneOr(Color())) - def rendered_view_url(self, background_color=None): + @validate(NoneOr(Color()), Number()) + def rendered_view_url(self, background_color=None, image_ratio=1): """Get a data URL of the rendered active image. Parameters @@ -814,14 +814,19 @@ def rendered_view_url(self, background_color=None): A data URL for the rendered image in PNG format, base64-encoded. """ + self.call_action("setIsExportingImage", True) + self.call_action("setImageRatio", image_ratio) self.call_action("waitForImageData") args = ["getImageDataUrl"] if background_color: args.append(background_color) - return self.call_action(*args, response_expected=True) + image_data_url = self.call_action(*args, response_expected=True) + self.call_action("setIsExportingImage", False) + self.call_action("resetImageRatio") + return image_data_url - @validate(NoneOr(Color())) - def rendered_view_data(self, background_color=None): + @validate(NoneOr(Color()), Number()) + def rendered_view_data(self, background_color=None, image_ratio=1): """Get the decoded data of the rendered active image. Parameters @@ -835,12 +840,12 @@ def rendered_view_data(self, background_color=None): The decoded PNG image data. """ - uri = self.rendered_view_url(background_color) + uri = self.rendered_view_url(background_color, image_ratio) data = uri.split(",")[1] return base64.b64decode(data) - @validate(String(), NoneOr(Color())) - def save_rendered_view(self, file_name, background_color=None): + @validate(String(), NoneOr(Color()), Number()) + def save_rendered_view(self, file_name, background_color=None, image_ratio=1): """Save the decoded data of the rendered active image to a file. Parameters @@ -851,7 +856,7 @@ def save_rendered_view(self, file_name, background_color=None): The background color. By default the background will be transparent. """ with open(file_name, 'wb') as f: - f.write(self.rendered_view_data(background_color)) + f.write(self.rendered_view_data(background_color, image_ratio)) def close(self): """Close any browser sessions and backend processes controlled by this session object. From 5d047f4b3ec7cadd7ec684189c224fa8cd94bdff Mon Sep 17 00:00:00 2001 From: I-Chenn Date: Mon, 15 May 2023 19:08:40 +0800 Subject: [PATCH 2/5] Set image_ratio only in save_rendered_view --- carta/session.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/carta/session.py b/carta/session.py index 7723cd7..eb95218 100644 --- a/carta/session.py +++ b/carta/session.py @@ -799,8 +799,8 @@ def set_cursor(self, x, y): # SAVE IMAGE - @validate(NoneOr(Color()), Number()) - def rendered_view_url(self, background_color=None, image_ratio=1): + @validate(NoneOr(Color())) + def rendered_view_url(self, background_color=None): """Get a data URL of the rendered active image. Parameters @@ -814,19 +814,14 @@ def rendered_view_url(self, background_color=None, image_ratio=1): A data URL for the rendered image in PNG format, base64-encoded. """ - self.call_action("setIsExportingImage", True) - self.call_action("setImageRatio", image_ratio) self.call_action("waitForImageData") args = ["getImageDataUrl"] if background_color: args.append(background_color) - image_data_url = self.call_action(*args, response_expected=True) - self.call_action("setIsExportingImage", False) - self.call_action("resetImageRatio") - return image_data_url + return self.call_action(*args, response_expected=True) - @validate(NoneOr(Color()), Number()) - def rendered_view_data(self, background_color=None, image_ratio=1): + @validate(NoneOr(Color())) + def rendered_view_data(self, background_color=None): """Get the decoded data of the rendered active image. Parameters @@ -840,7 +835,7 @@ def rendered_view_data(self, background_color=None, image_ratio=1): The decoded PNG image data. """ - uri = self.rendered_view_url(background_color, image_ratio) + uri = self.rendered_view_url(background_color) data = uri.split(",")[1] return base64.b64decode(data) @@ -854,9 +849,15 @@ def save_rendered_view(self, file_name, background_color=None, image_ratio=1): The name of the file. background_color : {1} The background color. By default the background will be transparent. + image_ratio : {2} + The desired image ratio to output. Default is 1. """ + self.call_action("setIsExportingImage", True) + self.call_action("setImageRatio", image_ratio) with open(file_name, 'wb') as f: - f.write(self.rendered_view_data(background_color, image_ratio)) + f.write(self.rendered_view_data(background_color)) + self.call_action("setIsExportingImage", False) + self.call_action("resetImageRatio") def close(self): """Close any browser sessions and backend processes controlled by this session object. From d206fecd42d4afc0fa52acd79643b6e92188608d Mon Sep 17 00:00:00 2001 From: I-Chenn Date: Wed, 17 May 2023 11:13:57 +0800 Subject: [PATCH 3/5] Revert "Set image_ratio only in save_rendered_view" This reverts commit 5d047f4b3ec7cadd7ec684189c224fa8cd94bdff. --- carta/session.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/carta/session.py b/carta/session.py index eb95218..7723cd7 100644 --- a/carta/session.py +++ b/carta/session.py @@ -799,8 +799,8 @@ def set_cursor(self, x, y): # SAVE IMAGE - @validate(NoneOr(Color())) - def rendered_view_url(self, background_color=None): + @validate(NoneOr(Color()), Number()) + def rendered_view_url(self, background_color=None, image_ratio=1): """Get a data URL of the rendered active image. Parameters @@ -814,14 +814,19 @@ def rendered_view_url(self, background_color=None): A data URL for the rendered image in PNG format, base64-encoded. """ + self.call_action("setIsExportingImage", True) + self.call_action("setImageRatio", image_ratio) self.call_action("waitForImageData") args = ["getImageDataUrl"] if background_color: args.append(background_color) - return self.call_action(*args, response_expected=True) + image_data_url = self.call_action(*args, response_expected=True) + self.call_action("setIsExportingImage", False) + self.call_action("resetImageRatio") + return image_data_url - @validate(NoneOr(Color())) - def rendered_view_data(self, background_color=None): + @validate(NoneOr(Color()), Number()) + def rendered_view_data(self, background_color=None, image_ratio=1): """Get the decoded data of the rendered active image. Parameters @@ -835,7 +840,7 @@ def rendered_view_data(self, background_color=None): The decoded PNG image data. """ - uri = self.rendered_view_url(background_color) + uri = self.rendered_view_url(background_color, image_ratio) data = uri.split(",")[1] return base64.b64decode(data) @@ -849,15 +854,9 @@ def save_rendered_view(self, file_name, background_color=None, image_ratio=1): The name of the file. background_color : {1} The background color. By default the background will be transparent. - image_ratio : {2} - The desired image ratio to output. Default is 1. """ - self.call_action("setIsExportingImage", True) - self.call_action("setImageRatio", image_ratio) with open(file_name, 'wb') as f: - f.write(self.rendered_view_data(background_color)) - self.call_action("setIsExportingImage", False) - self.call_action("resetImageRatio") + f.write(self.rendered_view_data(background_color, image_ratio)) def close(self): """Close any browser sessions and backend processes controlled by this session object. From 829b66d1f8b8d18ed965a112636d88503dd73e1a Mon Sep 17 00:00:00 2001 From: I-Chenn Date: Wed, 17 May 2023 12:40:24 +0800 Subject: [PATCH 4/5] Call setImageRatio in rendered_view_url and call resetImageRatio in save_rendered_view --- carta/session.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/carta/session.py b/carta/session.py index 7723cd7..1b07315 100644 --- a/carta/session.py +++ b/carta/session.py @@ -807,6 +807,8 @@ def rendered_view_url(self, background_color=None, image_ratio=1): ---------- background_color : {0} The background color. By default the background will be transparent. + image_ratio : {1} + The desired image ratio to output. Default is 1. Returns ------- @@ -822,7 +824,6 @@ def rendered_view_url(self, background_color=None, image_ratio=1): args.append(background_color) image_data_url = self.call_action(*args, response_expected=True) self.call_action("setIsExportingImage", False) - self.call_action("resetImageRatio") return image_data_url @validate(NoneOr(Color()), Number()) @@ -833,6 +834,8 @@ def rendered_view_data(self, background_color=None, image_ratio=1): ---------- background_color : {0} The background color. By default the background will be transparent. + image_ratio : {1} + The desired image ratio to output. Default is 1. Returns ------- @@ -854,9 +857,13 @@ def save_rendered_view(self, file_name, background_color=None, image_ratio=1): The name of the file. background_color : {1} The background color. By default the background will be transparent. + image_ratio : {2} + The desired image ratio to output. Default is 1. """ + self.call_action("resetImageRatio") with open(file_name, 'wb') as f: f.write(self.rendered_view_data(background_color, image_ratio)) + self.call_action("resetImageRatio") def close(self): """Close any browser sessions and backend processes controlled by this session object. From 7d3e80cd3cd11ee5cb8eb613c8569e2744d2b591 Mon Sep 17 00:00:00 2001 From: I-Chenn Date: Wed, 17 May 2023 16:04:51 +0800 Subject: [PATCH 5/5] Call resetImageRatio in rendered_view_url --- carta/session.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/carta/session.py b/carta/session.py index 1b07315..156409c 100644 --- a/carta/session.py +++ b/carta/session.py @@ -816,6 +816,7 @@ def rendered_view_url(self, background_color=None, image_ratio=1): A data URL for the rendered image in PNG format, base64-encoded. """ + self.call_action("resetImageRatio") self.call_action("setIsExportingImage", True) self.call_action("setImageRatio", image_ratio) self.call_action("waitForImageData") @@ -824,6 +825,7 @@ def rendered_view_url(self, background_color=None, image_ratio=1): args.append(background_color) image_data_url = self.call_action(*args, response_expected=True) self.call_action("setIsExportingImage", False) + self.call_action("resetImageRatio") return image_data_url @validate(NoneOr(Color()), Number()) @@ -860,10 +862,8 @@ def save_rendered_view(self, file_name, background_color=None, image_ratio=1): image_ratio : {2} The desired image ratio to output. Default is 1. """ - self.call_action("resetImageRatio") with open(file_name, 'wb') as f: f.write(self.rendered_view_data(background_color, image_ratio)) - self.call_action("resetImageRatio") def close(self): """Close any browser sessions and backend processes controlled by this session object.