IIC2233 / syllabus-2019-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🎉 🎊
43 stars 69 forks source link

Distribucion de puntaje #615

Closed perezpefaur closed 5 years ago

perezpefaur commented 5 years ago

En la distibucion de puntajes dice: image

Como se puede ver en la parte de formato PNG dice "escritura de archivos (guarda correctamente una matriz de pixeles RGB en una imagen png)". En mi codigo yo trabajo con la matriz de pixeles únicamente para hacer el filtro de dibujo y no para las fotos en formato png. Es decir, desde el cliente mando los bytes de la foto, y luego lo vuelvo a abrir en el servidor. En ningún momento para la sección de formato png (solo para hacer el filtro), hago la mtriz RGB. Esto esta mal? y si lo esta, me podrian aclarar que estaría bien?

Hernan4444 commented 5 years ago

Hola

Ese ítem se refiere a guardar la matriz en un archivo png con el IDAT, IHDR e IEND correspondiente y se vea, es decir, aunque no hagas el filtro, si: (1) Lee un archivo cualquiera (jpg por ejemplo). (2) Obtiene la matriz con la función dada. (3) La guarda en png bien y se ve en la interfaz y computador.

Entonces obtendrás el puntaje de dicho ítem. Si tu aplicas de inmediato el filtro, si la imagen con filtro se guarda en PNG y se ve en la interfaz como corresponde, también lo tendrás.

Por lo tanto, en tu caso, si el cliente manda la matriz RGB y el servidor le responde con la matriz luego de aplicar el filtro, si el cliente luego está haciendo save de dicha matriz con el IHDR, IDAT e IEND correspondiente, está todo bien :+1:

Offtopic: recuerda que si un usuario se conecta, define una foto y luego se desconecta, y desde otro pc el mismo usuario se conecta, este deberá ver la foto definida antes.

Saludos ✌️

perezpefaur commented 5 years ago

Gracias por responder! El "problema" que tengo es que envio la foto original en bytes al servidor (no ocupo get_pixels). El servidor con estos bytes crea una nueva foto (para que funcione siempre en cualquier computador) y lo guarda en una carpeta de fotos de los jugadores. Ahora con esta foto, lo puedo volver a enviar al cliente/frontend mediante bytes y abrir la foto para que se vea.

Como se puede ver en este proceso nunca ocupo la matriz RGB. Solo cuando me piden que haga un filtro de dibujo corro una función en el servidor (que utiliza get_pixels y todo el formato para convertir la matriz a png) que me cambia la foto original a una de dibujo, luego vuelvo a mandar los bytes de la imagen nueva al cliente/frontend mediante bytes y abro la foto para que se vea.

Es decir, puedo demostrar buena utilizacion de la matriz RGB a imagen png, pero solo lo utilizo cuando llamo a la funcion filtro dibujo. Nose si esto esta bien.

Juaco97 commented 5 years ago

Hola (...) Offtopic: recuerda que si un usuario se conecta, define una foto y luego se desconecta, y desde otro pc el mismo usuario se conecta, este deberá ver la foto definida antes.

Saludos ✌️

Hola! ¿Es obligación que mantenga todos los datos guardados incluyendo la foto de perfil que dejó la última vez que entro al juego? No lo había incluido en mi programa porque no encontré el requerimiento en el enunciado :c

Hernan4444 commented 5 years ago

Hola,

Si después de aplicar el filtro a la matriz, escribes un archivo PNG con dicha información el cual incluye el IDAT, IHDR e IEND, y se ve correctamente, está todo bien. Pero si lograste hacer que se vea la imagen con solo darle la matriz, entonces está mal porque no se logra evaluar que sepas escribir un png con ciertas características en cómo están su situación bytes.

@Juaco97 si es obligatorio, en la distribución de puntaje hay puntaje por persistencia de datos del usuario y la foto de perfil es un dato del usuario.

Saludos :v:

perezpefaur commented 5 years ago

Ya buenisimo, esto: "Si después de aplicar el filtro a la matriz, escribes un archivo PNG con dicha información el cual incluye el IDAT, IHDR e IEND, y se ve correctamente, está todo bien." se cumple en mi caso!

Solo para asegurarme: Yo no hago esto: "Pero si lograste hacer que se vea la imagen con solo darle la matriz." Nunca ocupó la matriz (solo en el caso de ocupar el filtro), abro la imagen con file.read en bytes y mando los bytes directamente al servidor, y el servidor son con estos bytes crea una nueva imagen. Solo cuando le llega la señal al servidor de hacer un filtro dibujo hago esto, recien ahi creando la matriz RBG: "Si después de aplicar el filtro a la matriz, escribes un archivo PNG con dicha información el cual incluye el IDAT, IHDR e IEND, y se ve correctamente, está todo bien."

fediaz3 commented 5 years ago

Tengo exactamente la misma duda. Como en una issue se dijo que se puede asumir que se prueban solo imagenes png. Algo que hice fue, el cliente se la manda al server, el server la guarda como png y el server se la envia devuelta al cliente/front y el front muestra la imagen png, nunca uso get_pixels ni tampoco ninguna matriz rgb ni conversion, pero cumpliendo con guardar y mostrar foto de perfil y que se pueda leer desde otro computador.

Al hacerlo de esta forma, usar get_pixels (png-> rgb) y la transformacion que se evalua (rgb -> png) quedaría en manos de implementar filtro dibujo? ¿ Cubriendo los 3 items del excel?

Muchas Gracias

Hernan4444 commented 5 years ago

@perezpefaur entonces está todo bien, el ayudante subirá una foto, le aplicará el filtro y verá si en el computador está guardada la nueva imagen con filtro, ahí cuando vea esa imagen, tendrás el puntaje del primer ítem y último ítem. Si tu código funciona con imágenes que incluyen el alpha o no, entonces ahí tendrás los 3 ítems

@fediaz3 No, en ese ítem se especifica que se evalúa la transformación de una matriz RGB a PNG, por lo tanto, se busca justamente que ustedes escriban un PNG a partir de la matriz (usen IHDR, IDAT e IEND) y en este punto no importa si haces el filtro o no, solo que hagas la transformación como corresponde. Por lo tanto, si tu nunca accedes a dicha matriz, no obtendrás el puntaje de dicho ítem.

Saludos ✌️