parent
cc9dc0895e
commit
e9be3b12b6
@ -0,0 +1,20 @@
|
|||||||
|
from PIL import Image
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
def blend_images(img1, img2, blend_ratio):
|
||||||
|
|
||||||
|
img2 = img2.resize(img1.size)
|
||||||
|
|
||||||
|
array1 = np.array(img1)
|
||||||
|
array2 = np.array(img2)
|
||||||
|
|
||||||
|
blended_array = np.round(array1 * blend_ratio + array2 * (1 - blend_ratio)).astype(np.uint8)
|
||||||
|
|
||||||
|
if blended_array.ndim == 2:
|
||||||
|
blended_array = np.expand_dims(blended_array, axis=2)
|
||||||
|
|
||||||
|
blended_img = Image.fromarray(blended_array, 'RGB')
|
||||||
|
|
||||||
|
return blended_img
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
def convert_to_black_and_white(image):
|
||||||
|
for x in range(image.width):
|
||||||
|
for y in range(image.height):
|
||||||
|
pixel_color = image.getpixel((x, y))
|
||||||
|
|
||||||
|
if pixel_color != (255, 255, 255):
|
||||||
|
image.putpixel((x, y), (0, 0, 0))
|
@ -0,0 +1,4 @@
|
|||||||
|
def convert_to_grayscale(image):
|
||||||
|
|
||||||
|
grayscale_image = image.convert("L")
|
||||||
|
return grayscale_image
|
@ -0,0 +1,11 @@
|
|||||||
|
import imageio
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
def creer_gif(tableau_images, output_path, duree=0.5):
|
||||||
|
gif = []
|
||||||
|
|
||||||
|
for img in tableau_images:
|
||||||
|
gif.append(Image.fromarray(img))
|
||||||
|
|
||||||
|
# Enregistrer le GIF
|
||||||
|
imageio.mimsave(output_path, gif, duration=duree)
|
@ -0,0 +1,13 @@
|
|||||||
|
from resize_image import redimensionner_image
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
def fusionner_horizontalement(image1, image2):
|
||||||
|
nouvelle_largeur = int(image2.size[0] * (image1.size[1] / image2.size[1]))
|
||||||
|
nouvelle_hauteur = image1.size[1]
|
||||||
|
image2_redimensionnee = redimensionner_image(image2, nouvelle_largeur, nouvelle_hauteur)
|
||||||
|
|
||||||
|
result = Image.new('RGB', (image1.width + image2_redimensionnee.width, image1.height))
|
||||||
|
result.paste(image1, (0, 0))
|
||||||
|
result.paste(image2_redimensionnee, (image1.width, 0))
|
||||||
|
|
||||||
|
return result
|
@ -0,0 +1,14 @@
|
|||||||
|
from resize_image import redimensionner_image
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
def fusionner_verticalement(image1, image2):
|
||||||
|
|
||||||
|
nouvelle_largeur = image1.size[0]
|
||||||
|
nouvelle_hauteur = int(image2.size[1] * (image1.size[0] / image2.size[0]))
|
||||||
|
image2_redimensionnee = redimensionner_image(image2, nouvelle_largeur, nouvelle_hauteur)
|
||||||
|
|
||||||
|
result = Image.new('RGB', (image1.width, image1.height + image2_redimensionnee.height))
|
||||||
|
result.paste(image1, (0, 0))
|
||||||
|
result.paste(image2_redimensionnee, (0, image1.height))
|
||||||
|
|
||||||
|
return result
|
@ -0,0 +1,4 @@
|
|||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
def open_image(image_path):
|
||||||
|
return Image.open(image_path)
|
@ -0,0 +1,17 @@
|
|||||||
|
from PIL import Image
|
||||||
|
import numpy as np
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
def redimensionner_image(image, nouvelle_largeur, nouvelle_hauteur):
|
||||||
|
a0, b0, _ = image.shape
|
||||||
|
|
||||||
|
ratio_lignes = a0 / nouvelle_largeur
|
||||||
|
ratio_colonnes = b0 / nouvelle_hauteur
|
||||||
|
|
||||||
|
image_sortie = np.zeros((nouvelle_largeur, nouvelle_hauteur, 3), dtype=np.uint8)
|
||||||
|
for ligne in range(nouvelle_largeur):
|
||||||
|
for col in range(nouvelle_hauteur):
|
||||||
|
for i in range(3):
|
||||||
|
image_sortie[ligne, col, i] = image[int(ligne * ratio_lignes), int(col * ratio_colonnes), i]
|
||||||
|
|
||||||
|
return Image.fromarray(image_sortie)
|
Loading…
Reference in new issue