Untitled
unknown
plain_text
8 months ago
3.8 kB
4
Indexable
import os
import imageio
import numpy as np
import matplotlib
matplotlib.use('Agg') # Use non-GUI backend for sandbox execution
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
def create_logo(logo_width=400, logo_height=100):
dpi = 100
fig_width = logo_width / dpi
fig_height = logo_height / dpi
fig = plt.figure(figsize=(fig_width, fig_height), dpi=dpi)
ax = plt.axes([0, 0, 1, 1]) # use full figure space
ax.set_xlim(0, logo_width)
ax.set_ylim(0, logo_height)
ax.axis('off')
# Set white background
fig.patch.set_facecolor('white')
ax.set_facecolor('white')
black = 'black'
# Draw a circle representing 'Sumur Inisiasi' (Initiation Well)
circle_center = (50, logo_height/2)
circle_radius = 20
circ = Circle(circle_center, circle_radius, color=black, fill=True)
ax.add_patch(circ)
# Draw a music note next to the circle
# Vertical stem
stem_x = 80
stem_y_bottom = logo_height/2 - 30
stem_y_top = logo_height/2 + 30
ax.plot([stem_x, stem_x], [stem_y_bottom, stem_y_top], color=black, linewidth=2)
# Note head: filled circle at the top of the stem
note_head_center = (stem_x, stem_y_top)
note_head_radius = 8
note_head = Circle(note_head_center, note_head_radius, color=black, fill=True)
ax.add_patch(note_head)
# Flag for the note: simple angled line
flag_start = (stem_x, stem_y_bottom)
flag_end = (stem_x + 20, stem_y_bottom + 10)
ax.plot([flag_start[0], flag_end[0]], [flag_start[1], flag_end[1]], color=black, linewidth=2)
# Add the text 'Harmony Entertainment' in a futuristic Y3K style
text = 'Harmony Entertainment'
text_x = 110
text_y = logo_height/2 + 10
ax.text(text_x, text_y, text, fontsize=16, color=black, fontweight='bold', family='sans-serif')
# Render the figure as a numpy array
fig.canvas.draw()
image = np.frombuffer(fig.canvas.tostring_argb(), dtype=np.uint8)
image = image.reshape(int(logo_height), int(logo_width), 4)
# Convert from ARGB to RGBA
image = image[:, :, [1, 2, 3, 0]]
plt.close(fig)
# Remove the alpha channel by assuming white background
logo_rgb = image[:, :, :3]
return logo_rgb
def main():
# Determine the correct path for the input image
possible_paths = ['/IMG_2129.png', 'IMG_2129.png']
bg_path = None
for path in possible_paths:
if os.path.exists(path):
bg_path = path
break
if bg_path is None:
raise FileNotFoundError('Could not locate IMG_2129.png in the expected directories.')
try:
background = imageio.imread(bg_path)
except Exception as e:
raise FileNotFoundError(f'Could not load the background image from {bg_path}: {e}')
# Create the logo image
logo = create_logo(logo_width=400, logo_height=100)
# Ensure background is RGB
if background.ndim == 2:
background = np.stack([background]*3, axis=-1)
elif background.shape[-1] == 4:
background = background[:, :, :3]
bg_height, bg_width = background.shape[:2]
logo_height, logo_width = logo.shape[:2]
if bg_height < logo_height or bg_width < logo_width:
raise ValueError('Background image is smaller than the logo dimensions.')
# Place the logo on the top-left corner of the background
output_image = background.copy()
output_image[0:logo_height, 0:logo_width] = logo
# Save the modified image with required naming and path
output_path = '/home/user/out_IMG_2129_logo.png'
try:
imageio.imwrite(output_path, output_image)
except Exception as e:
raise IOError(f'Failed to write the image to {output_path}: {e}')
print(f'Modified image saved successfully to {output_path}')
if __name__ == '__main__':
main()
Editor is loading...
Leave a Comment