Пример #1
0
def erosion(canvas):
    '''
    #TODO: Write what function does.
    '''
    covertGray(canvas)       
    canvas.data.colourPopToHappen = False
    canvas.data.cropPopToHappen = False
    canvas.data.drawOn = False
    if canvas.data.image != None:
        print(type(canvas.data.image))
       
        # Taking a matrix of size 5 as the kernel
        image_data = np.asarray(canvas.data.image)
        kernel = np.ones((5,5), np.uint8)
 
        # The first parameter is the original image,
        # kernel is the matrix with which image is 
        # convolved and third parameter is the number 
        # of iterations, which will determine how much 
        # you want to erode/dilate a given image. 
        dilated_image = cv2.erode(image_data, kernel, iterations=1)
        print(type(dilated_image))
        canvas.data.image = Image.fromarray(dilated_image)
        print(type(canvas.data.image))
        file_op.save(canvas)
        canvas.data.undoQueue.append(canvas.data.image.copy())
        canvas.data.imageForTk=draw.makeImageForTk(canvas)
        draw.drawImage(canvas) 
Пример #2
0
def send(thing):
    if 'username' in session:
        nowuser = session['username']
    else:
        nowuser = '******'
    m.append(f'{nowuser}:{thing}')
    file.save(m, 'message.lwf')
    print(f'{nowuser}:{thing}')
    return redirect('/')
Пример #3
0
def flip(canvas):
    canvas.data.colourPopToHappen = False
    canvas.data.cropPopToHappen = False
    canvas.data.drawOn = False
    if canvas.data.image != None:
        canvas.data.image = ImageOps.flip(canvas.data.image)
        file_op.save(canvas)
        canvas.data.undoQueue.append(canvas.data.image.copy())
        canvas.data.imageForTk = draw.makeImageForTk(canvas)
        draw.drawImage(canvas)
Пример #4
0
def reset(canvas):
    canvas.data.colourPopToHappen = False
    canvas.data.cropPopToHappen = False
    canvas.data.drawOn = False
    ### change back to original image
    if canvas.data.image != None:
        canvas.data.image = canvas.data.originalImage.copy()
        file_op.save(canvas)
        canvas.data.undoQueue.append(canvas.data.image.copy())
        canvas.data.imageForTk = draw.makeImageForTk(canvas)
        draw.drawImage(canvas)
Пример #5
0
def performCrop(event, canvas):
    canvas.data.image=\
    canvas.data.image.crop(\
    (int(round((canvas.data.startCropX-canvas.data.imageTopX)*canvas.data.imageScale)),
    int(round((canvas.data.startCropY-canvas.data.imageTopY)*canvas.data.imageScale)),
    int(round((canvas.data.endCropX-canvas.data.imageTopX)*canvas.data.imageScale)),
    int(round((canvas.data.endCropY-canvas.data.imageTopY)*canvas.data.imageScale))))
    canvas.data.endCrop = False
    canvas.data.cropPopToHappen = False
    file_op.save(canvas)
    canvas.data.undoQueue.append(canvas.data.image.copy())
    canvas.data.imageForTk = draw.makeImageForTk(canvas)
    draw.drawImage(canvas)
Пример #6
0
def undo(canvas):
    if len(canvas.data.undoQueue) > 0:
        # the last element of the Undo Deque is the
        # current version of the image
        lastImage = canvas.data.undoQueue.pop()
        # we would want the current version if wehit redo after undo
        canvas.data.redoQueue.appendleft(lastImage)
    if len(canvas.data.undoQueue) > 0:
        # the previous version of the image
        canvas.data.image = canvas.data.undoQueue[-1]
    file_op.save(canvas)
    canvas.data.imageForTk = draw.makeImageForTk(canvas)
    draw.drawImage(canvas)
Пример #7
0
def register(username, password):
    if username in userinfo:
        return f'''
<p>
    <a>用户{username}已存在</a>
</p>
<p>
	<a href="/">点击刷新</a> 
</p>
'''
    else:
        userinfo[username] = password
        file.save(userinfo, 'userinfo.lwf')
        m.append(f'欢迎:\'{username}\'注册{ltsname}账号')
        file.save(m, 'message.lwf')
        return redirect('/')
Пример #8
0
def login(username, password):
    if username not in userinfo:
        return f'''
<p>
    <a>用户{username}不存在</a>
</p>
<p>
	<a href="/">点击刷新</a> 
</p>
'''
    elif userinfo[username] == password:
        session['username'] = username
        m.append(f'欢迎:\'{username}\'来到{ltsname}')
        file.save(m, 'message.lwf')
        return redirect('/')
    else:
        return f'''
Пример #9
0
def covertGray(canvas):
    canvas.data.colourPopToHappen=False
    canvas.data.cropPopToHappen=False
    canvas.data.drawOn=False
    #### The existing method to convert to a grayscale image converts the ####
    ####         image mode, so I used my own function to convert         ####
    # value of each channel of a pixel is set to the average of the original
    # values of the channels
    if canvas.data.image!=None:
        data=[]
        for col in range(canvas.data.image.size[1]):
            for row in range(canvas.data.image.size[0]):
                r, g, b= canvas.data.image.getpixel((row, col))
                avg= int(round((r + g + b)/3.0))
                R, G, B= avg, avg, avg
                data.append((R, G, B))
        canvas.data.image.putdata(data)
        file_op.save(canvas)
        canvas.data.undoQueue.append(canvas.data.image.copy())
        canvas.data.imageForTk=draw.makeImageForTk(canvas)
        draw.drawImage(canvas)
Пример #10
0
def transpose(canvas):
    canvas.data.colourPopToHappen = False
    canvas.data.cropPopToHappen = False
    canvas.data.drawOn = False
    # I treated the image as a continuous list of pixel values row-wise
    # and simply excnaged the rows and the coloums
    # in oder to make it rotate clockewise, I reversed all the rows
    if canvas.data.image != None:
        imageData = list(canvas.data.image.getdata())
        newData = []
        newimg=Image.new(canvas.data.image.mode,\
                (canvas.data.image.size[1], canvas.data.image.size[0]))
        for i in range(canvas.data.image.size[0]):
            addrow = []
            for j in range(i, len(imageData), canvas.data.image.size[0]):
                addrow.append(imageData[j])
            addrow.reverse()
            newData += addrow
        newimg.putdata(newData)
        canvas.data.image = newimg.copy()
        file_op.save(canvas)
        canvas.data.undoQueue.append(canvas.data.image.copy())
        canvas.data.imageForTk = draw.makeImageForTk(canvas)
        draw.drawImage(canvas)
Пример #11
0
def menu_init(root, canvas):
    menubar = tk.Menu(root)
    # File pull-down Menu
    filemenu = tk.Menu(menubar, tearoff=0)
    filemenu.add_command(label="New", command=lambda: file_op.newImage(canvas))
    filemenu.add_command(label="Save", command=lambda: file_op.save(canvas))
    filemenu.add_command(label="Save As",
                         command=lambda: file_op.saveAs(canvas))
    menubar.add_cascade(label="File", menu=filemenu)

    # Edit pull-down Menu
    editmenu = tk.Menu(menubar, tearoff=0)
    editmenu.add_command(label="Undo   Z",
                         command=lambda: file_op.undo(canvas))
    editmenu.add_command(label="Redo   Y",
                         command=lambda: file_op.redo(canvas))
    menubar.add_cascade(label="Edit", menu=editmenu)
    root.config(menu=menubar)

    #Filter menu
    filtermenu = tk.Menu(menubar, tearoff=0)

    #Binary Morphology pull-down Menu
    bmormenu = tk.Menu(menubar, tearoff=0)
    bmormenu.add_command(label="Grassland", \
                           command=lambda:filters.identify_grass(canvas))
    bmormenu.add_command(label="Black and White", \
            command=lambda:filters.covertGray(canvas))
    filtermenu.add_cascade(label="Binary-Morphology", menu=bmormenu)

    #Gray Level Morphology pull-down Menu
    gmormenu = tk.Menu(menubar, tearoff=0)
    gmormenu.add_command(label="dilation", \
                           command=lambda:filters.dilation(canvas))
    gmormenu.add_command(label="erosion", \
            command=lambda:filters.erosion(canvas))
    filtermenu.add_cascade(label="GrayLevel-Morphology", menu=gmormenu)

    menubar.add_cascade(label="Filter", menu=filtermenu)
    root.config(menu=menubar)
Пример #12
0
def closeRotateWindow(canvas):
    if canvas.data.image != None:
        file_op.save(canvas)
        canvas.data.undoQueue.append(canvas.data.image.copy())
        canvas.data.rotateWindowClose = True
Пример #13
0
from flask import *

import file_op as file


a = Flask(__name__)

admin_list = []
try:
    port = file.read('port.lwf')
except Exception:
    port = int(input('Set port:'))
    file.save(port, 'port.lwf')
try:
    userinfo = file.read('userinfo.lwf')
except Exception:
    userinfo = {'admin': 'admin'}
    file.save(userinfo, 'userinfo.lwf')
try:
    m = file.read('message.lwf')
except Exception:
    m = []
    file.save(m, 'message.lwf')
try:
    admin_list = file.read('admin_list.lwf')
except Exception:
    admin_list = ['admin']
    file.save(admin_list, 'admin_list.lwf')
try:
    ltsname = file.read('ltsname.lwf')
except Exception: