Browse Source

bg filling

new-sep-loss
Michael Pilosov, PhD 9 months ago
parent
commit
f0a4c940af
  1. 21
      scripts/vips_composite.py

21
scripts/vips_composite.py

@ -4,6 +4,13 @@ import random
import os import os
import math import math
import numpy as np
def bg_fill(width: int, height: int, channels: int = 3, fill: int = 255):
a = np.ones(shape=(height, width, channels)) * fill
return pyvips.Image.new_from_array(a)
def create_grid_composite( def create_grid_composite(
directory, k, spacing_inches, output_file="output.png", dpi=300 directory, k, spacing_inches, output_file="output.png", dpi=300
@ -23,7 +30,8 @@ def create_grid_composite(
] ]
# Calculate the size of the composite image # Calculate the size of the composite image
widths, heights = zip(*[image.size for image in images]) # widths, heights = zip(*[image.size for image in images])
widths, heights = [1800], [1800]
max_width = max(widths) max_width = max(widths)
max_height = max(heights) max_height = max(heights)
@ -32,7 +40,8 @@ def create_grid_composite(
total_height = k * max_height + (k + 1) * spacing_pixels total_height = k * max_height + (k + 1) * spacing_pixels
# Create a blank image for the composite # Create a blank image for the composite
composite = pyvips.Image.black(total_width, total_height) # composite = pyvips.Image.black(total_width, total_height, bands=4)
composite = bg_fill(total_width, total_height, channels=1, fill=255)
# Place images into the composite # Place images into the composite
for i, image in enumerate(images): for i, image in enumerate(images):
@ -40,15 +49,19 @@ def create_grid_composite(
col = i % k col = i % k
x = col * (max_width + spacing_pixels) + spacing_pixels x = col * (max_width + spacing_pixels) + spacing_pixels
y = row * (max_height + spacing_pixels) + spacing_pixels y = row * (max_height + spacing_pixels) + spacing_pixels
composite = composite.insert(image, x, y)
composite = composite.insert(image.flatten(background=[255, 255, 255]), x, y)
# Save the composite image # Save the composite image
composite.write_to_file(output_file) composite.write_to_file(output_file)
x = pyvips.Image.thumbnail(output_file, 1080 * 4)
x.write_to_file("out_sm.png")
print(output_file)
if __name__ == "__main__": if __name__ == "__main__":
# Example usage # Example usage
directory = "/teamspace/studios/this_studio/out_sortcolors/umap/" # Change to your directory path directory = "/teamspace/studios/this_studio/out_sortcolors/umap/" # Change to your directory path
k = 3 # For a 3x3 grid k = 10
spacing_inches = 0.5 # Half an inch between images spacing_inches = 0.5 # Half an inch between images
create_grid_composite(directory, k, spacing_inches) create_grid_composite(directory, k, spacing_inches)

Loading…
Cancel
Save