diff --git a/planet2.png b/planet2.png new file mode 100644 index 0000000..13e7403 Binary files /dev/null and b/planet2.png differ diff --git a/planets.py b/planets.py index 27b4764..f995c1e 100644 --- a/planets.py +++ b/planets.py @@ -1,6 +1,7 @@ import os, random from PIL import Image + light_directory = os.fsencode(str(os.getcwd() + "/planets/light")) noise_directory = os.fsencode(str(os.getcwd() + "/planets/noise")) sphere_directory = os.fsencode(str(os.getcwd() + "/planets/sphere")) @@ -9,22 +10,62 @@ amount_lights = len(os.listdir(light_directory)) amount_noise = len(os.listdir(noise_directory)) amount_sphere = len(os.listdir(sphere_directory)) +def changeImageColor(im, red, green, blue): + # Split into 3 channels + r, g, b, a = im.split() + # Change channel by factor + r = r.point(lambda i: i * red) + g = g.point(lambda i: i * green) + b = b.point(lambda i: i * blue) + # Recombine back to RGB image + result = Image.merge('RGBA', (r, g, b, a)) + return result +def changePlanetLayerColor(planetLayer): + red = random.uniform(-0.5,1.5) + green = random.uniform(-0.5,1.5) + blue = random.uniform(-0.5,1.5) + print(red,green,blue) + changedColor = changeImageColor(planetLayer, red, green, blue) + return changedColor -def blendPlanetParts(light, noise, sphere, alpha): +def blendPlanetParts(light, noise1, noise2, noise3, sphere, alpha): blended = Image.blend(sphere, light, alpha) - blended2 = Image.blend(blended, noise, alpha) - return blended2 + blended = Image.blend(blended, noise1, alpha) + blended = Image.blend(blended, noise2, alpha) + blended = Image.blend(blended, noise3, alpha) + return blended + +def mergePlanetParts(light, noise1, noise2, noise3, sphere): + planet = sphere + planet.paste(light, (0, 0), light) + planet.paste(noise1, (0, 0), noise1) + planet = Image.blend(planet, noise2, 0.1) + planet = Image.blend(planet, noise3, 0.1) + #planet.paste(noise2, (0, 0), noise2) + #planet.paste(noise3, (0, 0), noise3) + return planet -def getRandomPlanet(): +def createRandomPlanet(seed): + + random.seed(seed) light = Image.open("planets/light/light" + str(random.randrange(0,amount_lights)) + ".png").convert('RGBA') - noise = Image.open("planets/noise/noise" + str(random.randrange(0,amount_noise)) + ".png").convert('RGBA') + noise1 = Image.open("planets/noise/noise" + str(random.randrange(0,amount_noise)) + ".png").convert('RGBA') + noise2 = Image.open("planets/noise/noise" + str(random.randrange(0,amount_noise)) + ".png").convert('RGBA') + noise3 = Image.open("planets/noise/noise" + str(random.randrange(0,amount_noise)) + ".png").convert('RGBA') sphere = Image.open("planets/sphere/sphere" + str(random.randrange(0,amount_sphere)) + ".png").convert('RGBA') - planet = blendPlanetParts(light, noise, sphere, 0.1) + light = changePlanetLayerColor(light) + noise1 = changePlanetLayerColor(noise1) + noise2 = changePlanetLayerColor(noise2) + noise3 = changePlanetLayerColor(noise3) + sphere = changePlanetLayerColor(sphere) + + planet = mergePlanetParts(light, noise1, noise2, noise3, sphere) return planet -planet = getRandomPlanet() -planet.save('planet1.png') \ No newline at end of file + +planet = createRandomPlanet(random.randrange(0,10000)) +planet.save("planet2.png") \ No newline at end of file