| from PIL import Image, ImageOps, ImageDraw | |
| from pyrogram.enums import ChatAction | |
| import numpy as np | |
| import requests | |
| import shutil | |
| import cv2 | |
| import io | |
| import os | |
| from info import RemoveBG_API | |
| async def rotate_90(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 + "/" + "rotate_90.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>") | |
| src = cv2.imread(a) | |
| image = cv2.rotate(src, cv2.cv2.ROTATE_90_CLOCKWISE) | |
| cv2.imwrite(edit_img_loc, image) | |
| 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("rotate_90-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 rotate_180(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 + "/" + "rotate_180.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>") | |
| src = cv2.imread(a) | |
| image = cv2.rotate(src, cv2.ROTATE_180) | |
| cv2.imwrite(edit_img_loc, image) | |
| 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("rotate_180-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 rotate_270(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 + "/" + "rotate_270.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>") | |
| src = cv2.imread(a) | |
| image = cv2.rotate(src, cv2.ROTATE_90_COUNTERCLOCKWISE) | |
| cv2.imwrite(edit_img_loc, image) | |
| 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("rotate_270-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 resize_photo(photo: str, userid: str) -> io.BytesIO: | |
| image = Image.open(photo) | |
| maxsize = 512 | |
| scale = maxsize / max(image.width, image.height) | |
| new_size = (int(image.width * scale), int(image.height * scale)) | |
| image = image.resize(new_size, Image.LANCZOS) | |
| resized_photo = io.BytesIO() | |
| resized_photo.name = "./DOWNLOADS" + "/" + userid + "resized.png" | |
| image.save(resized_photo, "PNG") | |
| return resized_photo | |
| async def round_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 + "/" + "rounded.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>") | |
| resized = resize_photo(a, userid) | |
| img = Image.open(resized).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_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("round_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 | |
| async def inverted(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 + "/" + "inverted.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>") | |
| image = Image.open(a) | |
| inverted_image = ImageOps.invert(image) | |
| inverted_image.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("inverted-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 removebg_plain(client, message): | |
| try: | |
| if not (RemoveBG_API == ""): | |
| 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 + "/" + "nobgplain.png" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| response = requests.post( | |
| "https://api.remove.bg/v1.0/removebg", | |
| files={"image_file": open(download_location, "rb")}, | |
| data={"size": "auto"}, | |
| headers={"X-Api-Key": RemoveBG_API}, | |
| ) | |
| if response.status_code == 200: | |
| with open(f"{edit_img_loc}", "wb") as out: | |
| out.write(response.content) | |
| else: | |
| await message.reply_to_message.reply_text( | |
| "Check if your api is correct", quote=True | |
| ) | |
| return | |
| 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 | |
| else: | |
| await message.reply_to_message.reply_text( | |
| "Get the api from https://www.remove.bg/b/background-removal-api and add in Config Var", | |
| quote=True, | |
| disable_web_page_preview=True, | |
| ) | |
| except Exception as e: | |
| print("removebg_plain-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 removebg_white(client, message): | |
| try: | |
| if not (RemoveBG_API == ""): | |
| 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 + "/" + "nobgwhite.png" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| response = requests.post( | |
| "https://api.remove.bg/v1.0/removebg", | |
| files={"image_file": open(download_location, "rb")}, | |
| data={"size": "auto"}, | |
| headers={"X-Api-Key": RemoveBG_API}, | |
| ) | |
| if response.status_code == 200: | |
| with open(f"{edit_img_loc}", "wb") as out: | |
| out.write(response.content) | |
| else: | |
| await message.reply_to_message.reply_text( | |
| "Check if your api is correct", quote=True | |
| ) | |
| return | |
| 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 | |
| else: | |
| await message.reply_to_message.reply_text( | |
| "Get the api from https://www.remove.bg/b/background-removal-api and add in Config Var", | |
| quote=True, | |
| disable_web_page_preview=True, | |
| ) | |
| except Exception as e: | |
| print("removebg_white-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 removebg_sticker(client, message): | |
| try: | |
| if not (RemoveBG_API == ""): | |
| 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 + "/" + "nobgsticker.webp" | |
| if not message.reply_to_message.empty: | |
| msg = await message.reply_to_message.reply_text( | |
| "<b>π³πΎππ½π»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>", quote=True | |
| ) | |
| await client.download_media( | |
| message=message.reply_to_message, file_name=download_location | |
| ) | |
| await msg.edit("<b>ππΏπ»πΎπ°π³πΈπ½πΆ πΈπΌπ°πΆπ΄....</b>") | |
| response = requests.post( | |
| "https://api.remove.bg/v1.0/removebg", | |
| files={"image_file": open(download_location, "rb")}, | |
| data={"size": "auto"}, | |
| headers={"X-Api-Key": RemoveBG_API}, | |
| ) | |
| if response.status_code == 200: | |
| with open(f"{edit_img_loc}", "wb") as out: | |
| out.write(response.content) | |
| else: | |
| await message.reply_to_message.reply_text( | |
| "Check if your api is correct", quote=True | |
| ) | |
| return | |
| 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 | |
| else: | |
| await message.reply_to_message.reply_text( | |
| "Get the api from https://www.remove.bg/b/background-removal-api and add in Config Var", | |
| quote=True, | |
| disable_web_page_preview=True, | |
| ) | |
| except Exception as e: | |
| print("removebg_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 | |