2 circles and a dot

This commit is contained in:
Frank Adaemmer 2023-05-18 22:20:47 +02:00
parent 26994d7c67
commit 1845e30a1f
2 changed files with 38 additions and 11 deletions

View file

@ -14,7 +14,7 @@
#slider {
position: relative;
width: 100%;
margin-bottom:3em;
margin-bottom:1em;
}
@ -51,22 +51,35 @@
{
"city": "Hamburg",
"lat": "53.64286",
"lng": "9.9753"
"lng": "9.9753",
"icon": "test5.png",
"anchor": [101,101]
},
// {
// "city": "Kiel",
// "lat": "54.3297",
// "lng": "10.1435"
// },
// {
// "city": "München",
// "lat": "48.1341",
// "lng": "11.5674",
// "icon": "test8.png",
// "anchor": [144,144]
// },
{
"city": "München",
"lat": "48.1341",
"lng": "11.5674"
"city": "La Spezia",
"lat": "44.1064",
"lng": "9.8439",
"icon": "test8.png",
"anchor": [144,144]
},
{
"city": "Teisnach",
"lat": "49.0301",
"lng": "12.998"
"lng": "12.998",
"icon": "test13.png",
"anchor": [144,144]
}
];
@ -74,8 +87,8 @@
const markers = locations.map(location => {
return L.marker([location.lat, location.lng], {icon: L.icon({
iconUrl: location.city + "64.png",
iconAnchor: [32,32]
iconUrl: location.icon,
iconAnchor: location.anchor
})}).addTo(map);
});
</script>

View file

@ -17,13 +17,13 @@ def circular_mask(img):
return img
def arrange_imager_in_circle(images, spacing=5):
def arrange_imager_in_circle(images, spacing=5, min_radius=0):
d = images[0].size[0]
dis = d + spacing
theta = 2*math.pi / len(images)
radius = dis/2/math.sin(theta/2)
radius = max(dis/2/math.sin(theta/2), min_radius)
imgWidth, imgHeight = (int(d+radius*2), int(d+radius*2))
masterImage = Image.new("RGBA", (imgWidth, imgHeight), (255,255,255,0))
@ -62,7 +62,21 @@ def create_circle(image_paths, output_path):
circular_images[0].save(output_path)
return
output_img = arrange_imager_in_circle(circular_images)
if len(circular_images) < 7:
output_img = arrange_imager_in_circle(circular_images)
ow, oh = output_img.size
else:
inner_img = arrange_imager_in_circle(circular_images[:4])
iw, ih = inner_img.size
mask = inner_img.split()[-1]
dr = circular_images[0].size[0]//2 + iw//2
output_img = arrange_imager_in_circle(circular_images[4:],min_radius=dr)
ow, oh = output_img.size
output_img.paste(inner_img,((ow-iw)//2,(oh-ih)//2),mask)
draw = ImageDraw.Draw(output_img)
dr = 3
draw.ellipse((ow//2-dr, oh//2-dr, ow//2+dr, oh//2+dr),fill=(255,0,0),outline=False)
output_path = output_img.save(output_path)