1
mirror of git://git.acid.vegas/scroll.git synced 2024-11-07 08:46:45 +00:00

Added contrast enhancement option

This commit is contained in:
Dionysus 2023-06-28 15:04:14 -04:00
parent 098373555e
commit b0e8a15f0e
Signed by: acidvegas
GPG Key ID: EF4B922DB85DC9DE
2 changed files with 7 additions and 5 deletions

View File

@ -13,7 +13,7 @@ pull request: https://github.com/ircart/scroll/pull/3
import io import io
try: try:
from PIL import Image from PIL import Image, ImageEnhance
except ImportError: except ImportError:
raise SystemExit('missing required \'pillow\' library (https://pypi.org/project/pillow/)') raise SystemExit('missing required \'pillow\' library (https://pypi.org/project/pillow/)')
@ -45,11 +45,13 @@ palettes = {
0xbcbcbc, 0xe2e2e2, 0xffffff] 0xbcbcbc, 0xe2e2e2, 0xffffff]
} }
def convert(data, max_line_len, img_width=80, palette='RGB99'): def convert(data, max_line_len, img_width=80, palette='RGB99', enhance=False):
if palette not in palettes: if palette not in palettes:
raise Exception('invalid palette option') raise Exception('invalid palette option')
palette = palettes[palette] palette = palettes[palette]
image = Image.open(io.BytesIO(data)) image = Image.open(io.BytesIO(data))
if enhance:
image = ImageEnhance.Contrast(image)
del data del data
return convert_image(image, max_line_len, img_width, palette) return convert_image(image, max_line_len, img_width, palette)

View File

@ -84,7 +84,7 @@ class Bot():
self.loops = dict() self.loops = dict()
self.host = '' self.host = ''
self.playing = False self.playing = False
self.settings = {'flood':1, 'ignore':'big,birds,doc,gorf,hang,nazi,pokemon', 'lines':500, 'msg':0.03, 'palette':'RGB99', 'paste':True, 'png_width':80, 'results':25} self.settings = {'flood':1, 'ignore':'big,birds,doc,gorf,hang,nazi,pokemon', 'lines':500, 'msg':0.03, 'paste':True, 'png_contrast':False, 'png_palette':'RGB99', 'png_width':80, 'results':25}
self.slow = False self.slow = False
self.reader = None self.reader = None
self.writer = None self.writer = None
@ -256,7 +256,7 @@ class Bot():
if url.startswith('https://') or url.startswith('http://'): if url.startswith('https://') or url.startswith('http://'):
try: try:
content = get_url(url).read() content = get_url(url).read()
ascii = img2irc.convert(content, 512 - len(f":{identity.nickname}!{identity.username}@{self.host} PRIVMSG {chan} :\r\n"), int(self.settings['png_width']), self.settings['palette']) ascii = img2irc.convert(content, 512 - len(f":{identity.nickname}!{identity.username}@{self.host} PRIVMSG {chan} :\r\n"), int(self.settings['png_width']), self.settings['png_palette'], self.settings['png_contrast'])
except Exception as ex: except Exception as ex:
await self.irc_error(chan, 'failed to convert image', ex) await self.irc_error(chan, 'failed to convert image', ex)
else: else:
@ -318,7 +318,7 @@ class Bot():
await self.sendmsg(chan, color('OK', light_green)) await self.sendmsg(chan, color('OK', light_green))
except ValueError: except ValueError:
await self.irc_error(chan, 'invalid option', 'must be a float or int') await self.irc_error(chan, 'invalid option', 'must be a float or int')
elif setting == 'paste': elif setting in ('paste', 'png_contrast'):
if option == 'on': if option == 'on':
self.settings[setting] = True self.settings[setting] = True
await self.sendmsg(chan, color('OK', light_green)) await self.sendmsg(chan, color('OK', light_green))