| | |
| | |
| | |
| | |
| | |
| | |
| | """ |
| | ✘ Commands Available - |
| | |
| | • `{i}border <reply to photo/sticker>` |
| | To create border around that media.. |
| | Ex - `{i}border 12,22,23` |
| | - `{i}border 12,22,23 ; width (in number)` |
| | |
| | • `{i}grey <reply to any media>` |
| | To make it black nd white. |
| | |
| | • `{i}color <reply to any Black nd White media>` |
| | To make it Colorfull. |
| | |
| | • `{i}toon <reply to any media>` |
| | To make it toon. |
| | |
| | • `{i}danger <reply to any media>` |
| | To make it look Danger. |
| | |
| | • `{i}negative <reply to any media>` |
| | To make negative image. |
| | |
| | • `{i}blur <reply to any media>` |
| | To make it blurry. |
| | |
| | • `{i}quad <reply to any media>` |
| | create a Vortex. |
| | |
| | • `{i}mirror <reply to any media>` |
| | To create mirror pic. |
| | |
| | • `{i}flip <reply to any media>` |
| | To make it flip. |
| | |
| | • `{i}sketch <reply to any media>` |
| | To draw its sketch. |
| | |
| | • `{i}blue <reply to any media>` |
| | just cool. |
| | |
| | • `{i}csample <color name /color code>` |
| | example : `{i}csample red` |
| | `{i}csample #ffffff` |
| | |
| | • `{i}pixelator <reply image>` |
| | Create a Pixelated Image.. |
| | """ |
| | import os |
| |
|
| | from . import LOGS, con |
| |
|
| | try: |
| | import cv2 |
| | except ImportError: |
| | LOGS.error(f"{__file__}: OpenCv not Installed.") |
| |
|
| | import numpy as np |
| |
|
| | try: |
| | from PIL import Image |
| | except ImportError: |
| | Image = None |
| | LOGS.info(f"{__file__}: PIL not Installed.") |
| |
|
| | from . import upload_file as upf |
| | from telethon.errors.rpcerrorlist import ( |
| | ChatSendMediaForbiddenError, |
| | MessageDeleteForbiddenError, |
| | ) |
| |
|
| | from . import ( |
| | Redis, |
| | async_searcher, |
| | download_file, |
| | get_string, |
| | requests, |
| | udB, |
| | ultroid_cmd, |
| | ) |
| |
|
| |
|
| | @ultroid_cmd(pattern="color$") |
| | async def _(event): |
| | reply = await event.get_reply_message() |
| | if not (reply and reply.media): |
| | return await event.eor("`Reply To a Black and White Image`") |
| | xx = await event.eor("`Coloring image 🎨🖌️...`") |
| | image = await reply.download_media() |
| | img = cv2.VideoCapture(image) |
| | ret, frame = img.read() |
| | cv2.imwrite("ult.jpg", frame) |
| | if udB.get_key("DEEP_API"): |
| | key = Redis("DEEP_API") |
| | else: |
| | key = "quickstart-QUdJIGlzIGNvbWluZy4uLi4K" |
| | r = requests.post( |
| | "https://api.deepai.org/api/colorizer", |
| | files={"image": open("ult.jpg", "rb")}, |
| | headers={"api-key": key}, |
| | ) |
| | os.remove("ult.jpg") |
| | os.remove(image) |
| | if "status" in r.json(): |
| | return await event.edit( |
| | r.json()["status"] + "\nGet api nd set `{i}setdb DEEP_API key`" |
| | ) |
| | r_json = r.json()["output_url"] |
| | await event.client.send_file(event.chat_id, r_json, reply_to=reply) |
| | await xx.delete() |
| |
|
| |
|
| | @ultroid_cmd(pattern="(grey|blur|negative|danger|mirror|quad|sketch|flip|toon)$") |
| | async def ult_tools(event): |
| | match = event.pattern_match.group(1) |
| | ureply = await event.get_reply_message() |
| | if not (ureply and (ureply.media)): |
| | await event.eor(get_string("cvt_3")) |
| | return |
| | ultt = await ureply.download_media() |
| | xx = await event.eor(get_string("com_1")) |
| | if ultt.endswith(".tgs"): |
| | xx = await xx.edit(get_string("sts_9")) |
| | file = await con.convert(ultt, convert_to="png", outname="ult") |
| | ult = cv2.imread(file) |
| | if match == "grey": |
| | ultroid = cv2.cvtColor(ult, cv2.COLOR_BGR2GRAY) |
| | elif match == "blur": |
| | ultroid = cv2.GaussianBlur(ult, (35, 35), 0) |
| | elif match == "negative": |
| | ultroid = cv2.bitwise_not(ult) |
| | elif match == "danger": |
| | dan = cv2.cvtColor(ult, cv2.COLOR_BGR2RGB) |
| | ultroid = cv2.cvtColor(dan, cv2.COLOR_HSV2BGR) |
| | elif match == "mirror": |
| | ish = cv2.flip(ult, 1) |
| | ultroid = cv2.hconcat([ult, ish]) |
| | elif match == "flip": |
| | trn = cv2.flip(ult, 1) |
| | ish = cv2.rotate(trn, cv2.ROTATE_180) |
| | ultroid = cv2.vconcat([ult, ish]) |
| | elif match == "quad": |
| | ult = cv2.imread(file) |
| | roid = cv2.flip(ult, 1) |
| | mici = cv2.hconcat([ult, roid]) |
| | fr = cv2.flip(mici, 1) |
| | trn = cv2.rotate(fr, cv2.ROTATE_180) |
| | ultroid = cv2.vconcat([mici, trn]) |
| | elif match == "sketch": |
| | gray_image = cv2.cvtColor(ult, cv2.COLOR_BGR2GRAY) |
| | inverted_gray_image = 255 - gray_image |
| | blurred_img = cv2.GaussianBlur(inverted_gray_image, (21, 21), 0) |
| | inverted_blurred_img = 255 - blurred_img |
| | ultroid = cv2.divide(gray_image, inverted_blurred_img, scale=256.0) |
| | elif match == "toon": |
| | height, width, _ = ult.shape |
| | samples = np.zeros([height * width, 3], dtype=np.float32) |
| | count = 0 |
| | for x in range(height): |
| | for y in range(width): |
| | samples[count] = ult[x][y] |
| | count += 1 |
| | _, labels, centers = cv2.kmeans( |
| | samples, |
| | 12, |
| | None, |
| | (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10000, 0.0001), |
| | 5, |
| | cv2.KMEANS_PP_CENTERS, |
| | ) |
| | centers = np.uint8(centers) |
| | ish = centers[labels.flatten()] |
| | ultroid = ish.reshape(ult.shape) |
| | cv2.imwrite("ult.jpg", ultroid) |
| | await ureply.reply( |
| | file="ult.jpg", |
| | force_document=False, |
| | ) |
| | await xx.delete() |
| | os.remove("ult.jpg") |
| | os.remove(file) |
| |
|
| |
|
| | @ultroid_cmd(pattern="csample (.*)") |
| | async def sampl(ult): |
| | if color := ult.pattern_match.group(1).strip(): |
| | img = Image.new("RGB", (200, 100), f"{color}") |
| | img.save("csample.png") |
| | try: |
| | try: |
| | await ult.delete() |
| | await ult.respond(f"Colour Sample for `{color}` !", file="csample.png") |
| | except MessageDeleteForbiddenError: |
| | await ult.reply(f"Colour Sample for `{color}` !", file="csample.png") |
| | except ChatSendMediaForbiddenError: |
| | await ult.eor("Umm! Sending Media is disabled here!") |
| |
|
| | else: |
| | await ult.eor("Wrong Color Name/Hex Code specified!") |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="blue$", |
| | ) |
| | async def ultd(event): |
| | ureply = await event.get_reply_message() |
| | xx = await event.eor("`...`") |
| | if not (ureply and (ureply.media)): |
| | await xx.edit(get_string("cvt_3")) |
| | return |
| | ultt = await ureply.download_media() |
| | if ultt.endswith(".tgs"): |
| | await xx.edit(get_string("sts_9")) |
| | file = await con.convert(ultt, convert_to="png", outname="ult") |
| | lnk = upf(file) |
| | r = await async_searcher( |
| | f"https://nekobot.xyz/api/imagegen?type=blurpify&image={lnk}", re_json=True |
| | ) |
| | ms = r.get("message") |
| | if not r["success"]: |
| | return await xx.edit(ms) |
| | await download_file(ms, "ult.png") |
| | img = Image.open("ult.png").convert("RGB") |
| | img.save("ult.webp", "webp") |
| | await event.client.send_file( |
| | event.chat_id, |
| | "ult.webp", |
| | force_document=False, |
| | reply_to=event.reply_to_msg_id, |
| | ) |
| | await xx.delete() |
| | os.remove("ult.png") |
| | os.remove("ult.webp") |
| | os.remove(ultt) |
| |
|
| |
|
| | @ultroid_cmd(pattern="border( (.*)|$)") |
| | async def ok(event): |
| | hm = await event.get_reply_message() |
| | if not (hm and (hm.photo or hm.sticker)): |
| | return await event.eor("`Reply to Sticker or Photo..`") |
| | col = event.pattern_match.group(1).strip() |
| | wh = 20 |
| | if not col: |
| | col = [255, 255, 255] |
| | else: |
| | try: |
| | if ";" in col: |
| | col_ = col.split(";", maxsplit=1) |
| | wh = int(col_[1]) |
| | col = col_[0] |
| | col = [int(col) for col in col.split(",")[:2]] |
| | except ValueError: |
| | return await event.eor("`Not a Valid Input...`") |
| | okla = await hm.download_media() |
| | img1 = cv2.imread(okla) |
| | constant = cv2.copyMakeBorder(img1, wh, wh, wh, wh, cv2.BORDER_CONSTANT, value=col) |
| | cv2.imwrite("output.png", constant) |
| | await event.client.send_file(event.chat.id, "output.png") |
| | os.remove("output.png") |
| | os.remove(okla) |
| | await event.delete() |
| |
|
| |
|
| | @ultroid_cmd(pattern="pixelator( (.*)|$)") |
| | async def pixelator(event): |
| | reply_message = await event.get_reply_message() |
| | if not (reply_message and (reply_message.photo or reply_message.sticker)): |
| | return await event.eor("`Reply to a photo`") |
| | hw = 50 |
| | try: |
| | hw = int(event.pattern_match.group(1).strip()) |
| | except (ValueError, TypeError): |
| | pass |
| | msg = await event.eor(get_string("com_1")) |
| | image = await reply_message.download_media() |
| | input_ = cv2.imread(image) |
| | height, width = input_.shape[:2] |
| | w, h = (hw, hw) |
| | temp = cv2.resize(input_, (w, h), interpolation=cv2.INTER_LINEAR) |
| | output = cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST) |
| | cv2.imwrite("output.jpg", output) |
| | await msg.respond("• Pixelated by Ultroid", file="output.jpg") |
| | await msg.delete() |
| | os.remove("output.jpg") |
| | os.remove(image) |
| |
|