Тема: pillow затемнення картинки
Привіт!
Переніс з цієї теми.
Хочу затемнити фото
▼Code
from PIL import Image, ImageFont, ImageFilter
import os, sys
class CreateImg:
def __init__(self):
self.DESKTOP_PNG = 'desktop.png'
#arial.ttf - шрифт, size - величина#
self.font = ImageFont.truetype('arial.ttf', size = 50)
def _set_size(self):
screen = os.popen("xrandr -q -d :0").readlines()[0]
self.height = int(screen.split()[9][:-1])
self.width = int(screen.split()[7])
#стискання картинки до розмірів монітора
self.img.thumbnail((self.width, self.height))
def _eclipse(self):
#покищо тут блюр але має бути затемнення?
self.img = self.img.filter(ImageFilter.GaussianBlur(1))
def _format_fon(self):
self._set_size()
self._eclipse()
def _create_fon(self):
try:
self.img = Image.open('img.jpg')#шлях до фото яке потрібно редагувати
self._format_fon()
except Exception as e:
print('Картинка не знайдена!')
sys.exit(0)
def _get_text(self):
self.text = ''
print('Яку домашку не зробив :D?')
while True:
add_text = input()
if add_text == '':
break
else:
self.text += add_text + '\n'
def _add_text(self):
self._get_text()
self.idraw.text((10, 10), self.text, font = self.font)
print('Текст додано :3')
def _save_img(self):
self.img.save(self.DESKTOP_PNG)
print(f'Картинку збережено :3\nНазва картинки {self.DESKTOP_PNG}')
def create_png(self):
self._create_fon()
self._add_text()
self._save_img()
if __name__ == '__main__':
try:
desktop = CreateImg()
desktop.create_png()
except Exception as e:
print('Установи бібліотеку pillow\npip install pillow - для віндовс\npip3 install pillow - для linux')
хотів намалювати поверх картинки прямокутник з заливкою але заливка не може бути напів прозорою...
також в ImageFilter немає такого ефекту =(
UPD:
Відповідь:
▼код з коментарями
from PIL import Image
#фото, обовязкова конвертація в "RGBA"
img1 = Image.open(r"img2.jpg").convert("RGBA")
#прямокутник з розмірами фото
img2 = Image.new('RGBA', (img1.size), 'black')
#прозорість on
img2.putalpha(200)
#з'єднання
im3 = Image.alpha_composite(img1, img2)
#показ картинки
im3.show()
UPD2:
Відповідь 2
▼код з коментарем
from PIL import Image, ImageEnhance
im = Image.open('image.jpg')
enhancer = ImageEnhance.Brightness(im)
#factor < 1 - зменшити яскравість
factor = 0.5
new_im = enhancer.enhance(factor)
new_im.save('darkimage.jpg')