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

View file

@ -17,13 +17,13 @@ def circular_mask(img):
return 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] d = images[0].size[0]
dis = d + spacing dis = d + spacing
theta = 2*math.pi / len(images) 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)) imgWidth, imgHeight = (int(d+radius*2), int(d+radius*2))
masterImage = Image.new("RGBA", (imgWidth, imgHeight), (255,255,255,0)) 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) circular_images[0].save(output_path)
return return
if len(circular_images) < 7:
output_img = arrange_imager_in_circle(circular_images) 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) output_path = output_img.save(output_path)