Mam obraz png jako tło i chcę dodać przezroczystą siatkę do tego tła, ale to nie działa zgodnie z oczekiwaniami. Obraz tła jest konwertowany na przezroczysty w miejscach, w których stosuję przezroczystą siatkę.Scalanie tła z przezroczystym obrazem w PIL
robie:
from PIL import Image, ImageDraw
map_background = Image.open(MAP_BACKGROUND_FILE).convert('RGBA')
map_mesh = Image.new('RGBA', (width, height), (0, 0, 0, 0))
draw = ImageDraw.Draw(map_mesh)
# Create mesh using: draw.line([...], fill=(255, 255, 255, 50), width=1)
...
map_background.paste(map_mesh, (0, 0), map_mesh)
ale wynik jest:
Można zobaczyć szachownicę, jeśli przyjrzeć się dokładnie (stosowany w programach graficznych jak bez tła). Przezroczyste linie sprawiają, że warstwa tła jest przezroczysta również w miejscach, w których obie warstwy się spotkały. Ale chcę tylko, aby przezroczysta linia była dodawana na tle.
mogę rozwiązać go z:
map_background.paste ((255,255,255), (0, 0), map_mesh)
ale jak stosować różne kolory dla różnych linii, to musiałby zrobić dla każdy kolor tego procesu. Gdybym miał 100 kolorów, potrzebowałbym 100 warstw, co nie jest zbyt dobrym rozwiązaniem.
Możliwy duplikat http://stackoverflow.com/questions/5324647/how-to-merge-a-transparent-png-image-with-another-image-using- pil –