| from PIL import Image, ImageEnhance, ImageDraw | |
| from pyrogram.enums import ChatAction | |
| import numpy as np | |
| import os | |
| import cv2 | |
| import shutil | |
| async def circle_with_bg(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "circle.png" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| img = Image.open(a).convert("RGB") | |
| npImage = np.array(img) | |
| h, w = img.size | |
| alpha = Image.new("L", img.size, 0) | |
| draw = ImageDraw.Draw(alpha) | |
| draw.pieslice([0, 0, h, w], 0, 360, fill=255) | |
| npAlpha = np.array(alpha) | |
| npImage = np.dstack((npImage, npAlpha)) | |
| Image.fromarray(npImage).save(edit_img_loc) | |
| await message.reply_chat_action(ChatAction.UPLOAD_PHOTO) | |
| await message.reply_to_message.reply_photo(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("circle_with_bg-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| async def circle_without_bg(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "circle.png" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| img = Image.open(a).convert("RGB") | |
| npImage = np.array(img) | |
| h, w = img.size | |
| alpha = Image.new("L", img.size, 0) | |
| draw = ImageDraw.Draw(alpha) | |
| draw.pieslice([0, 0, h, w], 0, 360, fill=255) | |
| npAlpha = np.array(alpha) | |
| npImage = np.dstack((npImage, npAlpha)) | |
| Image.fromarray(npImage).save(edit_img_loc) | |
| await message.reply_chat_action(ChatAction.UPLOAD_DOCUMENT) | |
| await message.reply_to_message.reply_document(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("circle_without_bg-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| async def sticker(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "sticker.webp" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| os.rename(a, edit_img_loc) | |
| await message.reply_to_message.reply_sticker(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("sticker-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| def add_corners(im, rad): | |
| circle = Image.new("L", (rad * 2, rad * 2), 0) | |
| draw = ImageDraw.Draw(circle) | |
| draw.ellipse((0, 0, rad * 2, rad * 2), fill=255) | |
| alpha = Image.new("L", im.size, 255) | |
| w, h = im.size | |
| alpha.paste(circle.crop((0, 0, rad, rad)), (0, 0)) | |
| alpha.paste(circle.crop((0, rad, rad, rad * 2)), (0, h - rad)) | |
| alpha.paste(circle.crop((rad, 0, rad * 2, rad)), (w - rad, 0)) | |
| alpha.paste(circle.crop((rad, rad, rad * 2, rad * 2)), (w - rad, h - rad)) | |
| im.putalpha(alpha) | |
| return im | |
| async def edge_curved(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "edge_curved.webp" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| im = Image.open(a) | |
| im = add_corners(im, 100) | |
| im.save(edit_img_loc) | |
| await message.reply_chat_action(ChatAction.UPLOAD_PHOTO) | |
| await message.reply_to_message.reply_sticker(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("edge_curved-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| async def contrast(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "contrast.jpg" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| image = Image.open(a) | |
| contrast = ImageEnhance.Contrast(image) | |
| contrast.enhance(1.5).save(edit_img_loc) | |
| await message.reply_chat_action(ChatAction.UPLOAD_PHOTO) | |
| await message.reply_to_message.reply_photo(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("contrast-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| def sepia(img): | |
| width, height = img.size | |
| new_img = img.copy() | |
| for x in range(width): | |
| for y in range(height): | |
| red, green, blue = img.getpixel((x, y)) | |
| new_val = 0.3 * red + 0.59 * green + 0.11 * blue | |
| new_red = int(new_val * 2) | |
| if new_red > 255: | |
| new_red = 255 | |
| new_green = int(new_val * 1.5) | |
| if new_green > 255: | |
| new_green = 255 | |
| new_blue = int(new_val) | |
| if new_blue > 255: | |
| new_blue = 255 | |
| new_img.putpixel((x, y), (new_red, new_green, new_blue)) | |
| return new_img | |
| async def sepia_mode(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "sepia.jpg" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| image = Image.open(a) | |
| new_img = sepia(image) | |
| new_img.save(edit_img_loc) | |
| await message.reply_chat_action(ChatAction.UPLOAD_PHOTO) | |
| await message.reply_to_message.reply_photo(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("sepia_mode-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| def dodgeV2(x, y): | |
| return cv2.divide(x, 255 - y, scale=256) | |
| async def pencil(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "pencil.jpg" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| img = cv2.imread(a) | |
| img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
| img_invert = cv2.bitwise_not(img_gray) | |
| img_smoothing = cv2.GaussianBlur(img_invert, (21, 21), sigmaX=0, sigmaY=0) | |
| final_img = dodgeV2(img_gray, img_smoothing) | |
| cv2.imwrite(edit_img_loc, final_img) | |
| await message.reply_chat_action(ChatAction.UPLOAD_PHOTO) | |
| await message.reply_to_message.reply_photo(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("pencil-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |
| def color_quantization(img, k): | |
| data = np.float32(img).reshape((-1, 3)) | |
| criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 1.0) | |
| _, label, center = cv2.kmeans( | |
| data, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS | |
| ) | |
| center = np.uint8(center) | |
| result = center[label.flatten()] | |
| result = result.reshape(img.shape) | |
| return result | |
| async def cartoon(client, message): | |
| try: | |
| userid = str(message.chat.id) | |
| if not os.path.isdir(f"./DOWNLOADS/{userid}"): | |
| os.makedirs(f"./DOWNLOADS/{userid}") | |
| download_location = "./DOWNLOADS" + "/" + userid + "/" + userid + ".jpg" | |
| edit_img_loc = "./DOWNLOADS" + "/" + userid + "/" + "kang.jpg" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| a = await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| img = cv2.imread(a) | |
| edges = cv2.Canny(img, 100, 200) | |
| gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
| edges = cv2.adaptiveThreshold( | |
| gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 5 | |
| ) | |
| color = cv2.bilateralFilter(img, d=9, sigmaColor=200, sigmaSpace=200) | |
| cv2.bitwise_and(color, color, mask=edges) | |
| img_1 = color_quantization(img, 7) | |
| cv2.imwrite(edit_img_loc, img_1) | |
| await message.reply_chat_action(ChatAction.UPLOAD_PHOTO) | |
| await message.reply_to_message.reply_photo(edit_img_loc, quote=True) | |
| await msg.delete() | |
| else: | |
| await message.reply_text("Why did you delete that??") | |
| try: | |
| shutil.rmtree(f"./DOWNLOADS/{userid}") | |
| except Exception: | |
| pass | |
| except Exception as e: | |
| print("cartoon-error - " + str(e)) | |
| if "USER_IS_BLOCKED" in str(e): | |
| return | |
| else: | |
| try: | |
| await message.reply_to_message.reply_text( | |
| "Something went wrong!", quote=True | |
| ) | |
| except Exception: | |
| return | |