1 Востаннє редагувалося mamkin haker (23.07.2021 12:45:52)

Тема: 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')

2

Re: pillow затемнення картинки

alpha_composite

Подякували: leofun01, mamkin haker2

3 Востаннє редагувалося ch0r_t (22.07.2021 22:28:08)

Re: pillow затемнення картинки

koala написав:

alpha_composite

Я вас цілком не розумію, десь в темі загалом не поважали вербально все це нижнє підкреслення і дивності з cout<<, - і тим не менш володієте спокійно цим кострубатим артрофічним нео-змієм на експертному рівні.

4

Re: pillow затемнення картинки

Перепрошую, їхав у транспорті, тому не писав детально. Скопіював ключове слово з іншої сторінки.

5 Востаннє редагувалося mamkin haker (23.07.2021 08:16:21)

Re: pillow затемнення картинки

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()
Подякували: koala1

6

Re: pillow затемнення картинки

Можна це все простіше зробити, без прозорості і прямокутників

from PIL import Image, ImageEnhance

im = Image.open('image.jpg')

enhancer = ImageEnhance.Brightness(im)

'''
factor = 1 - зображення без змін
factor < 1 - зменшити яскравість
factor > 1 - збільшити яскравість
'''

factor = 0.5

new_im = enhancer.enhance(factor)
new_im.save('darkimage.jpg')
Подякували: koala, mamkin haker2

7 Востаннє редагувалося mamkin haker (23.07.2021 11:46:31)

Re: pillow затемнення картинки

/KIT\ написав:

Можна це все простіше зробити, без прозорості і прямокутників

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')

згоден, цей метод коротший

вхідне фото

http://replace.org.ua/extensions/om_images/img/60fa8f1605b28/5898d41ead4d7852ec72b67a24ed724d.jpg

метод з прямокутником

http://replace.org.ua/extensions/om_images/img/60fa8f1605b28/dc7b70c7ee4a4c263390a0f9b78468b8.png

метод з яскравістю пікселів (фактор 0.2)

http://replace.org.ua/extensions/om_images/img/60fa8f1605b28/2fb77486cb319431bd900a6e11de8177.png

Результат однаковий