better color handling
This commit is contained in:
		
							
								
								
									
										3
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								README
									
									
									
									
									
								
							| @@ -2,7 +2,8 @@ | |||||||
|  |  | ||||||
| ## Deployment | ## Deployment | ||||||
| Run the ansible playbooks (`setup` once, `deploy` on each code update): | Run the ansible playbooks (`setup` once, `deploy` on each code update): | ||||||
|  | (Don't forget to set variables!) | ||||||
| ``` | ``` | ||||||
| ansible-playbook deploy/setup.playbook.yml -i <ip of pi> | ansible-playbook deploy/setup.playbook.yml -i <ip of pi> | ||||||
| ansible-playbook deploy/deploy.playbook.yml -i <ip of pi> | ansible-playbook deploy/deploy.playbook.yml -i <ip of pi> | ||||||
| ``` | ``` | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ | |||||||
|  |  | ||||||
|     - name: Copy keys python file |     - name: Copy keys python file | ||||||
|       copy: |       copy: | ||||||
|         src: ../keys.py |         src: ../src/keys.py | ||||||
|         dest: "{{ code_dest }}/keys.py" |         dest: "{{ code_dest }}/keys.py" | ||||||
|  |  | ||||||
|     - name: Copy unit files |     - name: Copy unit files | ||||||
|   | |||||||
| @@ -57,14 +57,6 @@ | |||||||
|       wait_for_connection: |       wait_for_connection: | ||||||
|         delay: 5 |         delay: 5 | ||||||
|         timeout: 300 |         timeout: 300 | ||||||
|        |  | ||||||
|     # - name: Add wifi networks from template |  | ||||||
|     #   template: |  | ||||||
|     #     src: templates/wpa_supplicant.conf.j2 |  | ||||||
|     #     dest: /etc/wpa_supplicant/wpa_supplicant.conf |  | ||||||
|     #     owner: root |  | ||||||
|     #     group: root |  | ||||||
|     #     mode: 0600 |  | ||||||
|  |  | ||||||
|     - name: Use raspi-config to set WIFI country |     - name: Use raspi-config to set WIFI country | ||||||
|       shell: | |       shell: | | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ class ImageGetCombined: | |||||||
|             + [ugettter] * int(other_image_percent/2) \ |             + [ugettter] * int(other_image_percent/2) \ | ||||||
|             + [mgetter] * int(other_image_percent/2) |             + [mgetter] * int(other_image_percent/2) | ||||||
|         # representing weighted probabilities |         # representing weighted probabilities | ||||||
|         print(f"Using {len(self.getters)} image sources: ~{own_image_percent}% own, ~{other_image_percent}% foreign images.") |         print(f"Using 3 image sources: ~{own_image_percent}% own, ~{other_image_percent}% foreign images.") | ||||||
|  |  | ||||||
|  |  | ||||||
|     def get_random_image(self) -> bytearray: |     def get_random_image(self) -> bytearray: | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ class ImageGetMuseum(ImageGet): | |||||||
|  |  | ||||||
|         response = h.post(self.base_url + "search", json=post_data, headers=self.headers) |         response = h.post(self.base_url + "search", json=post_data, headers=self.headers) | ||||||
|         if not response.status_code == 200: |         if not response.status_code == 200: | ||||||
|             raise ImageGetException("Error in step get_image_file: " + str(response.status_code)) |             raise ImageGetException("Error in step get_random_image_ids: " + str(response.status_code)) | ||||||
|  |  | ||||||
|         response = json.loads(response.text) |         response = json.loads(response.text) | ||||||
|         images = response["data"] |         images = response["data"] | ||||||
| @@ -60,7 +60,9 @@ class ImageGetMuseum(ImageGet): | |||||||
|             raise ImageGetException("Error in step get_image_file: " + str(response.status_code)) |             raise ImageGetException("Error in step get_image_file: " + str(response.status_code)) | ||||||
|          |          | ||||||
|         response = json.loads(response.text) |         response = json.loads(response.text) | ||||||
|         image_url = response["config"]["iiif_url"] + "/" + response["data"]["image_id"] + "/full/843,/0/default.jpg" |         image_url = response["config"]["iiif_url"] + f"/{response['data']['image_id']}/full/843,/0/default.jpg" | ||||||
|         image = h.get(image_url).content |         try: | ||||||
|  |             image = h.get(image_url).content | ||||||
|  |         except (h.ConnectError, h.NetworkError, h.RequestError, h.HTTPStatusError) as e: | ||||||
|  |             raise ImageGetException(f"Error in step get_image_file: {e}") | ||||||
|         return image |         return image | ||||||
|  |  | ||||||
|   | |||||||
| @@ -44,8 +44,11 @@ class ImageGet: | |||||||
|         for i, id in enumerate(ids): |         for i, id in enumerate(ids): | ||||||
|             print(f"Caching image {i + 1}") |             print(f"Caching image {i + 1}") | ||||||
|             new_cache = self.cache_dir / f"{uuid.uuid4()}" |             new_cache = self.cache_dir / f"{uuid.uuid4()}" | ||||||
|             new_cache.write_bytes(self.get_image_file(id)) |             try: | ||||||
|  |                 new_cache.write_bytes(self.get_image_file(id)) | ||||||
|  |             except ImageGetException: | ||||||
|  |                 print("Could not cache image, skipping") | ||||||
|  |                 continue | ||||||
|  |  | ||||||
|     def load_cached_file(self) -> bytearray: |     def load_cached_file(self) -> bytearray: | ||||||
|         """Returns a random file from self.cache_dir""" |         """Returns a random file from self.cache_dir""" | ||||||
|   | |||||||
| @@ -32,9 +32,8 @@ class ImageShrink: | |||||||
|     """Shrinks a given image (bytearray) to a given resolution (width, height)""" |     """Shrinks a given image (bytearray) to a given resolution (width, height)""" | ||||||
|     resolution = (480, 800) |     resolution = (480, 800) | ||||||
|  |  | ||||||
|     def __init__(self, dither=True, colors=7) -> None: |     def __init__(self, reduce_colors=False) -> None: | ||||||
|         self.dither = dither |         self.reduce_colors = reduce_colors | ||||||
|         self.colors = colors |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     def convert(self, image: bytearray) -> Image: |     def convert(self, image: bytearray) -> Image: | ||||||
| @@ -61,8 +60,13 @@ class ImageShrink: | |||||||
|         if image.mode != "RGB": |         if image.mode != "RGB": | ||||||
|             print("Converting image to RGB") |             print("Converting image to RGB") | ||||||
|             image = image.convert("RGB") |             image = image.convert("RGB") | ||||||
|         if self.colors == -1: |         if not self.reduce_colors: | ||||||
|             print("Skipping color reduction") |             print("Not manually reducing colors") | ||||||
|             return image |             return image | ||||||
|         new_image = image.quantize(colors = len(palette), palette=ref_image, dither=self.dither) |          | ||||||
|  |         new_image = image.quantize( | ||||||
|  |             colors = len(palette), | ||||||
|  |             palette = ref_image, | ||||||
|  |             dither = True | ||||||
|  |             ) | ||||||
|         return new_image |         return new_image | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								src/main.py
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								src/main.py
									
									
									
									
									
								
							| @@ -9,14 +9,17 @@ if len(sys.argv) == 2 and sys.argv[1] == "test": | |||||||
|     shower.draw_sample_image() |     shower.draw_sample_image() | ||||||
|     sys.exit() |     sys.exit() | ||||||
|  |  | ||||||
|  |  | ||||||
| shrink_kwargs = {} | shrink_kwargs = {} | ||||||
| if "nodither" in sys.argv: | # if "dither" in sys.argv: | ||||||
|     print("Disabling dithering") | #     print("Enabling dithering") | ||||||
|     shrink_kwargs["dither"] = False | #     shrink_kwargs["dither"] = True | ||||||
| if "noreduce" in sys.argv: | # if "noreduce" in sys.argv: | ||||||
|     print("Disabling color reduction") | #     print("Disabling color reduction") | ||||||
|     shrink_kwargs["colors"] = -1 | #     shrink_kwargs["colors"] = -1 | ||||||
|  | if "reduce" in sys.argv: | ||||||
|  |     print("Enabling color reduction") | ||||||
|  |     shrink_kwargs["reduce_colors"] = True | ||||||
|  |  | ||||||
|  |  | ||||||
| getter = ImageGetCombined() | getter = ImageGetCombined() | ||||||
| converter = ImageShrink(**shrink_kwargs) | converter = ImageShrink(**shrink_kwargs) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user