def func(self):
        try:
            if not self.photo is None:
                p = requests.get(self.photo)
                out = open('img.jpg', 'wb')
                out.write(p.content)
                out.close()

                image = Image.open('img.jpg')
                draw = ImageDraw.Draw(image)
                width = image.size[0]
                height = image.size[1]
                pix = image.load()

                for i in range(width):
                    for j in range(height):
                        a = pix[i, j][0]
                        b = pix[i, j][1]
                        c = pix[i, j][2]
                        draw.point((i, j), (255 - a, 255 - b, 255 - c))

                image.save('img.jpg', "JPEG")
                del draw
                self.result['attachment'] = UEngine.image('img.jpg')
                os.remove('img.jpg')
            else:
                self.result['message'] = 'Прикрепите фото.'
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False
    def func(self):
        try:
            if not self.photo is None:
                p = requests.get(self.photo)
                out = open('img.jpg', 'wb')
                out.write(p.content)
                out.close()

                image = Image.open('img.jpg')
                draw = ImageDraw.Draw(image)
                width = image.size[0]
                height = image.size[1]

                part1 = image.crop((0, 0, width / 2, height))
                part2 = part1.transpose(Image.FLIP_LEFT_RIGHT)
                image.paste(part2, (round(width / 2), 0))

                image.save('img.jpg', "JPEG")
                del draw
                self.result['attachment'] = UEngine.image('img.jpg')
                os.remove('img.jpg')
            else:
                self.result['message'] = 'Прикрепите фото.'
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False
Exemple #3
0
    def func(self):
        try:
            if not self.photo is None:
                if UEngine.is_int(self.text):
                    if 100 >= int(self.text) >= 0:
                        p = requests.get(self.photo)
                        out = open('img.jpg', 'wb')
                        out.write(p.content)
                        out.close()

                        image = Image.open('img.jpg')

                        for i in range(int(self.text)):
                            image = image.filter(ImageFilter.BLUR)

                        image.save('img.jpg', "JPEG")
                        self.result['attachment'] = UEngine.image('img.jpg')
                        os.remove('img.jpg')
                    else:
                        self.result['message'] = 'Введите коэффицент [0..100].'
                else:
                    self.result['message'] = 'Введите коэффицент.'
            else:
                self.result['message'] = 'Прикрепите фото.'
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False
    def func(self):
        try:
            self.text = self.text.replace('^', '**')

            def mandelbrot(s,
                           pmin,
                           pmax,
                           ppoints,
                           qmin,
                           qmax,
                           qpoints,
                           max_iterations=200,
                           infinity_border=10):
                image = np.zeros((ppoints, qpoints))
                p, q = np.mgrid[pmin:pmax:(ppoints * 1j),
                                qmin:qmax:(qpoints * 1j)]
                c = p + 1j * q
                z = np.zeros_like(c)
                for k in range(max_iterations):
                    z = eval(s)
                    mask = (np.abs(z) > infinity_border) & (image == 0)
                    image[mask] = k
                    z[mask] = np.nan
                    plt.imsave(fname=f'img{k}.jpg', arr=-image.T, cmap='flag')
                return -image.T

            if len(self.text) == 0:
                self.text = 'z**2 + c'
            if not 'c' in self.text:
                self.text += ' + c'
            if not 'z' in self.text:
                self.text = 'z * ' + self.text

            plt.figure(figsize=(10, 10))
            mandelbrot(self.text, -2.5, 1.5, 500, -2, 2, 500, 100)
            plt.xticks([])
            plt.yticks([])

            if self.mode == '+':
                images = []
                for img in range(0, 100):
                    imgname = 'img' + str(img) + '.jpg'
                    images.append(imageio.imread(imgname))
                imageio.mimsave('img.gif', images)

            for i in range(0, 99):
                os.remove(f'img{i}.jpg')

            if self.mode == '+':
                self.result['attachment'] = UEngine.doc('img.gif')
                os.remove('img.gif')
            else:
                self.result['attachment'] = UEngine.image('img99.jpg')
                os.remove('img99.jpg')
            return True
        except Exception as _e:
            self.result['message'] = str(_e)
        return False
    def func(self):
        try:
            if not self.photo is None:
                if UEngine.is_int(self.text):
                    if 100 >= int(self.text) >= -100:
                        p = requests.get(self.photo)
                        out = open('img.jpg', 'wb')
                        out.write(p.content)
                        out.close()

                        image = Image.open('img.jpg')
                        draw = ImageDraw.Draw(image)
                        width = image.size[0]
                        height = image.size[1]
                        pix = image.load()

                        factor = int(self.text)
                        for i in range(width):
                            for j in range(height):
                                a = pix[i, j][0] + factor
                                b = pix[i, j][1] + factor
                                c = pix[i, j][2] + factor
                                if a < 0:
                                    a = 0
                                if b < 0:
                                    b = 0
                                if c < 0:
                                    c = 0
                                if a > 255:
                                    a = 255
                                if b > 255:
                                    b = 255
                                if c > 255:
                                    c = 255
                                draw.point((i, j), (a, b, c))

                        image.save('img.jpg', "JPEG")
                        del draw
                        self.result['attachment'] = UEngine.image('img.jpg')
                        os.remove('img.jpg')
                    else:
                        self.result[
                            'message'] = 'Введите коэффицент [-100..100].'
                else:
                    self.result['message'] = 'Введите коэффицент.'
            else:
                self.result['message'] = 'Прикрепите фото.'
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False
    def func(self):
        try:
            msg_id = self.message
            sm = 0
            cnt = 0

            def get_color(n):
                return int(n / 1.25) if sm >= 255 else int(n * 2.5)

            text = self.text

            nums = [int(s) for s in text.split() if s.isdigit()]
            if len(nums) == 3:
                for i in nums:
                    text = text.replace(str(i), '')
            if len(text) > 10:
                text = text[:10]
            tt = text
            text = ''
            for t in tt:
                text += t.upper()
            text = text.replace(' ', '')
            for i in list(text):
                if len(nums) == 3:
                    r, g, b = nums[0], nums[1], nums[2]
                else:
                    r, g, b = ri(0, 255), ri(0, 255), ri(0, 255)
                sm += r + g + b
                image = Image.new('RGB', (500, 500), (r, g, b))
                draw = ImageDraw.Draw(image)
                fnt = ImageFont.truetype('arial.ttf', size=300)
                w, h = fnt.getsize(i)
                draw.text(((500 - w) / 2, (500 - h) / 2),
                          i,
                          fill=(get_color(r / 1.4), get_color(g / 1.4),
                                get_color(b / 1.4)),
                          font=fnt)
                image.save(f'ImageChar{msg_id}_{cnt}.jpg', 'JPEG')
                cnt += 1
                del draw
            atts = ''
            for a in range(cnt):
                atts += UEngine.image(f'ImageChar{msg_id}_{a}.jpg') + ','
                os.remove(f'ImageChar{msg_id}_{a}.jpg')
            self.result['attachment'] = atts
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False
    def func(self):
        try:
            if not self.photo is None:
                if UEngine.is_int(self.text):
                    if 100 >= int(self.text) >= 0:
                        p = requests.get(self.photo)
                        out = open('img.jpg', 'wb')
                        out.write(p.content)
                        out.close()

                        image = Image.open('img.jpg')
                        draw = ImageDraw.Draw(image)
                        width = image.size[0]
                        height = image.size[1]
                        pix = image.load()

                        depth = int(self.text)
                        for i in range(width):
                            for j in range(height):
                                a = pix[i, j][0]
                                b = pix[i, j][1]
                                c = pix[i, j][2]
                                s = (a + b + c) // 3
                                a = s + depth * 2
                                b = s + depth
                                c = s
                                if a > 255:
                                    a = 255
                                if b > 255:
                                    b = 255
                                if c > 255:
                                    c = 255
                                draw.point((i, j), (a, b, c))

                        image.save('img.jpg', "JPEG")
                        del draw
                        self.result['attachment'] = UEngine.image('img.jpg')
                        os.remove('img.jpg')
                    else:
                        self.result['message'] = 'Введите значение [0..100].'
                else:
                    self.result['message'] = 'Введите глубину.'
            else:
                self.result['message'] = 'Прикрепите фото.'
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False
    def func(self):
        try:
            if self.text.lower() in ['help', 'помощь']:
                self.result['message'] = 'red / green / blue\n' \
                                         'красный / зеленый / синий\n' \
                                         '[r][g][b]'
                return True
            if not self.photo is None:
                if len(self.text.split()):
                    _r = False
                    _g = False
                    _b = False
                    t = self.text.split()
                    if 'red' in t or 'красный' in t or 'r' in t or 'к' in t or \
                            'red' in self.text or 'красный' in self.text:
                        _r = True
                    if 'green' in t or 'зеленый' in t or 'g' in t or 'з' in t or \
                            'green' in self.text or 'зеленый' in self.text or 'зелёный' in t or 'зелёный' in self.text:
                        _g = True
                    if 'blue' in t or 'синий' in t or 'b' in t or 'с' in t or \
                            'blue' in self.text or 'синий' in self.text:
                        _b = True

                    if len(self.text) <= 3 and self.text != 'red':
                        if 'r' in self.text or 'к' in self.text:
                            _r = True
                        if 'g' in self.text or 'з' in self.text:
                            _g = True
                        if 'b' in self.text or 'с' in self.text:
                            _b = True

                    p = requests.get(self.photo)
                    out = open('img.jpg', 'wb')
                    out.write(p.content)
                    out.close()

                    image = Image.open("img.jpg")
                    draw = ImageDraw.Draw(image)
                    width = image.size[0]
                    height = image.size[1]
                    pix = image.load()
                    for i in range(width):
                        for j in range(height):
                            a = pix[i, j][0] * _r
                            b = pix[i, j][1] * _g
                            c = pix[i, j][2] * _b

                            draw.point((i, j), (a, b, c))

                    image.save('img.jpg', "JPEG")
                    del draw
                    self.result['attachment'] = UEngine.image('img.jpg')
                    os.remove('img.jpg')
                else:
                    self.result['message'] = 'Выберите цвет'
            else:
                self.result['message'] = 'Прикрепите фото'
            return True
        except Exception as e:
            self.result['message'] = str(e)
            return False