Professor / image /edit_2.py
azils3's picture
Upload 47 files
bc96bf6 verified
raw
history blame
16 kB
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