def blending():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor = int(request.form.get('valor'))
        archivo = request.files.get('imagen')
        archivo_dos = request.files.get('imagen_dos')
        if archivo is None or archivo_dos is None:
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            imagen_dos = him.obtener_imagen(archivo_dos)
            respuesta = AritmethicOperator().blending(imagen, imagen_dos,
                                                      valor)
    return render_template('aritmethic_operator/blending.html',
                           url_imagen=respuesta)
def or_():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            valor = int(0)
            imagen_dos = None
            imagen = him.obtener_imagen(archivo)
            archivo_dos = request.files.get('imagen_dos')
            if (archivo_dos is None):
                valor = int(request.form.get('valor'))
            else:
                imagen_dos = him.obtener_imagen(archivo_dos)
            respuesta = LogicalOperator().or_(imagen, imagen_dos, valor)
    return render_template('logical_operator/or.html', url_imagen=respuesta)
def pixel_division():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            valor = int(0)
            imagen_dos = None
            imagen = him.obtener_imagen(archivo)
            archivo_dos = request.files.get('imagen_dos')
            if (archivo_dos is None):
                valor = int(request.form.get('valor'))
            else:
                imagen_dos = him.obtener_imagen(archivo_dos)
            respuesta = AritmethicOperator().pixel_division(
                imagen, imagen_dos, valor)
    return render_template('aritmethic_operator/pixel_division.html',
                           url_imagen=respuesta)
def exponential():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = PointOperator().exponential(imagen)
    return render_template('point_operator/exponential.html',
                           url_imagen=respuesta)
def histogram_equalization():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = PointOperator().histogram_equalization(imagen)
    return render_template('point_operator/histogram_equalization.html',
                           url_imagen=respuesta)
def hog():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        orientacion = int(request.form.get('orientacion'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = OtherOperator().hog(imagen, orientacion)
    return render_template('other_operator/hog.html', url_imagen=respuesta)
def median():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor = int(request.form.get('valor'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = FilterOperator().median(imagen, valor)
    return render_template('filter_operator/median.html', url_imagen=respuesta)
def invert():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = LogicalOperator().invert(imagen)
    return render_template('logical_operator/invert.html',
                           url_imagen=respuesta)
def closing():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor = int(request.form.get('valor'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = MorphologyOperator().closing(imagen, valor)
    return render_template('morphology_operator/closing.html',
                           url_imagen=respuesta)
def twirl():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor = int(request.form.get('valor'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = GeometricOperator().twirl(imagen, valor)
    return render_template('geometric_operator/twirl.html',
                           url_imagen=respuesta)
def rotate():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        grados = int(request.form.get('grados'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = GeometricOperator().rotate(imagen, grados)
    return render_template('geometric_operator/rotate.html',
                           url_imagen=respuesta)
def raise_to_power():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        constante = int(request.form.get('constante'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = PointOperator().raise_to_power(imagen, constante)
    return render_template('point_operator/raise_to_power.html',
                           url_imagen=respuesta)
def conservative():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor = int(request.form.get('valor'))
        tamanio = int(request.form.get('tamanio'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = FilterOperator().conservative(imagen, valor, tamanio)
    return render_template('filter_operator/conservative.html',
                           url_imagen=respuesta)
def contrast_stretching():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor_minimo = int(request.form.get('valor_minimo'))
        valor_maximo = int(request.form.get('valor_maximo'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = PointOperator().contrast_stretching(
                imagen, valor_minimo, valor_maximo)
    return render_template('point_operator/contrast_stretching.html',
                           url_imagen=respuesta)
def thresholding():
    if request.method == 'GET':
        respuesta = None
    if request.method == 'POST':
        valor = int(request.form.get('valor'))
        tipo = int(request.form.get('tipo'))
        archivo = request.files.get('imagen')
        if (archivo is None):
            respuesta = None
        else:
            imagen = him.obtener_imagen(archivo)
            respuesta = PointOperator().thresholding(imagen, float(valor),
                                                     tipo)
    return render_template('point_operator/thresholding.html',
                           url_imagen=respuesta)