|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
β 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) |
|
|