Presentado a: juan carlos dìAZ






descargar 433.98 Kb.
títuloPresentado a: juan carlos dìAZ
página1/11
fecha de publicación22.07.2015
tamaño433.98 Kb.
tipoDocumentos
m.exam-10.com > Derecho > Documentos
  1   2   3   4   5   6   7   8   9   10   11
UNIVERSIDAD EL BOSQUE

FACULTAD DE ING. ELECTRÒNICA

CURSO DE JAVA

PRESENTADO A: JUAN CARLOS DÌAZ

PRESENTADO POR: JACKSON DAVID NIÑO Cod. 04170037

MANEJO AVANZADO DE IMÁGENES EN JAVA
INTRODUCCION:
El API de manejo avanzado de imágenes extiende la plataforma de Java (incluso el API de Java 2D ) permitiendo una imagen sofisticada, alto rendimiento que procesa para ser incorporado en los programas de Java. El manejo avanzado de imagen de java es un juego de clases que proporcionan una funcionalidad de imagen más allá de Java 2D y de la Fundación de Java, aunque es compatible con esos API.

El API de java avanzado de imagen lleva a cabo un juego de imagen del centro que procesa capacidades incluyendo imagen azulada, regiones de interés, hilando y la ejecución diferido. JAI también ofrece un juego de imagen del centro que procesa a operadores que incluyen a muchos puntos en común, área y operadores del dominio de la frecuencia.

JAI encapsula los datos de la estructura de la imagen y las invocaciones del método remoto dentro de los datos de la imagen re-utilizables, permitiendo un archivo de la imagen, un objeto de imagen de red o los datos del real-tiempo que vierten para ser procesados idénticamente. JAI sigue una carrera de tiempo de la biblioteca modelo de java, mientras proporciona la independencia de la plataforma con el paradigma "escriba una vez, ejecute en cualquier parte." El imaging del cliente-servidor se apoya por vía de la plataforma de Java que está conectando a una red de computadoras y tecnologías de ejecución remotas. La ejecución remota es basada en Java RMI (método remoto de invocación). Esto permite que el código de Java en un cliente invoque las llamadas del método en objetos que residen en otra computadora sin tener que mover aquéllos objetos al cliente.

JAI sigue un modelo objeto dónde las imágenes y operadores de imagen son definidas como objetos subclasificados fuera de un padre común. Un objeto del operador es el instanciado con uno o más fuentes de la imagen y otros parámetros. Este objeto del operador puede volverse una fuente de la imagen entonces para el próximo objeto del operador. Las conexiones entre los objetos definen el flujo de datos procesados. Pueden definirse los gráficos del editable resultantes de imagen que procesa los funcionamientos e instanciado como necesitado. JAI también proporciona un armazón extensible que permite agregar las soluciones personalizadas al central API.
MANEJO AVANZADO DE IMÀGENES

Librería API 2D:

El API 2D de Java contiene gráficos avanzados en dos dimensiones, texto, y capacidades de manejo de imágenes para los programas Java a través de la extensión del AWT. Este paquete soporta líneas artísticas, texto e imágenes, siendo flexible potente para desarrollar interfaces de usuario, programas de dibujo sofisticados y editores de imágenes.

El API 2D de Java proporciona:

  • Un modelo de renderizado uniforme para pantallas e impresoras.

  • Gráficos primitivos geométricos, como curvas, rectángulos, y elipses y un mecanismo para renderizar virtualmente cualquier forma geométrica.

  • Mecanismos para detectar esquinas de formas, texto e imágenes.

  • Un modelo de composición que proporciona control sobre cómo se renderizan los objetos solapados.

  • Soporte de color mejorado que facilita su manejo.

  • Soporte para imprimir documentos complejos.

Las capacidades de procesado de imágenes de Java se encuentran recogidas en el paquete java.awt.image. Entre las mas importantes se pueden destacar:

Interfaces:

ImageProducer ImageConsumer. ImageObserver

Las clases que implementa el interfaz ImageProducer sirven como fuentes de pixels. Los métodos de estas clases pueden generar los pixels a partir de la pantalla, o puede interpretar cualquier otra fuente de datos, como un fichero GIF. No importa cómo genere los datos, el principal propósito de un productor de imágenes es proporcionar pixels a una clase ImageConsumer.

Los productores de imágenes operan como fuentes de imágenes, y el modelo productor/consumidor que se sigue en el tratamiento de imágenes es el mismo que se utiliza en el modelo fuente/receptor de eventos.

En particular, los métodos declarados en el interfaz ImageProducer hacen posible que uno o más objetos ImageConsumer se registren para mostrar su interés en una imagen. El productor de la imagen invocará a los métodos declarados en el interfaz ImageConsumer para enviar pixels a los consumidores de imágenes.

Un productor de imágenes puede registrar muchos consumidores de sus pixels, de la misma forma que una fuente de eventos puede registrar múltiples receptores de sus eventos. En el interfaz ImageProducer hay varios métodos para manipular la lista de consumidores, por ejemplo para añadir nuevos consumidores interesados en los pixels del productor, o para eliminar consumidores de la lista.

El interfaz ImageConsumer declara métodos que deben ser implementados por las clases que reciben datos desde un productor de imágenes. El principal de estos métodos es setPixels().

void setPixels( int,int,int,int,ColorModel,byte[],int,int )

La clase ColorModel

Dependiendo de cómo se quiera representar la imagen en pantalla, un solo pixel puede contener mucha información, o casi ninguna. Por ejemplo, si se quieren dibujar una serie de líneas del mismo color sobre un fondo de un color diferente, la única información que debe contener cada pixel es si debe estar encendido o apagado, es decir, que solamente sería necesario un bit de información para representar al pixel.

En el otro extremo de la información que puede recoger un pixel se encuentran los gráficos complejos de los juegos de ordenador, que requieren 32-bits para representar un pixel individual. Estos 32 bits se dividen en grupos de cuatro octetos de bits, o bytes. Tres de estos grupos representan la cantidad de colores fundamentales: rojo, verde y azul, que forman parte del color del pixel; y el cuarto byte, normalmente conocido con byte alpha, se utiliza para representar la transparencia, en un rango de 0 a 255, siendo 0 la transparencia total y 255 la opacidad completa.

En teoría, este formato permite la utilización de 16 millones de colores en cada pixel individual, aunque puede ser que el monitor o la tarjeta gráfica no sean capaces de visualizar electrónicamente tal cantidad de colores. Cada uno de los extremos se puede considerar como un modelo de color. En Java, un modelo de color determina cuántos colores se van a representar dentro del AWT. La clase ColorModel es una clase abstracta que se puede extender para poder especificar representaciones de color propias.

Un modelo de color es necesario porque hay muchos métodos que reciben un array de bytes y convierten esos bytes en pixeles para su presentación en pantalla, es decir, convierten los bytes de datos en pixels visuales sobre la pantalla. Por ejemplo, con un modelo de color directo simple, cada grupo de cuatro bytes se podría interpretar como la representación de un valor del color de un pixel individual. En un modelo de color indexado simple, cada byte en el array se podría interpretar como un índice a una tabla de enteros de 32 bits donde cada uno de esos enteres representa el valor del color adscrito al pixel.

El AWT proporciona tres subclases de ColorModel: IndexColorModel, ComponentColorModel y PackedColorModel.

La clase IndexColorModel:

Cuando se utilizan imágenes de alta resolución, se consume gran cantidad de memoria; por ejemplo, una imagen de dimensiones 1024x768, contiene 786.432 pixels individuales. Si se quieren representar estos pixels con sus cuatro bytes en memoria, se necesitarán 3.145.728 bytes de memoria para esta imagen.

Para evitar este rápido descenso de memoria, se han incorporado varios esquemas de forma que las imágenes se puedan representar de forma razonable sin comprometer demasiado el uso de memoria. Un esquema muy común consiste en localizar un pequeño número de bits para cada pixel (8 bits por ejemplo) y luego utilizar los valores de los pixels como un índice a una tabla de enteros de 32 bits que contenga el subconjunto de todos los colores que se utilizan en la imagen. Por ejemplo, si se utilizan ocho bits para representar un pixel, el valor del pixel se puede utilizar como índice a una tabla de contenga hasta 256 colores que se utilicen en la imagen. Estos 256 colores se pueden seleccionar entre los millones disponibles, conociéndose a este subconjunto como la paleta de colores de la imagen.

La clase DirectColorModel:

Esta clase se extiende a la clase PackedColorModel e implementa el formato completo de color de 32-bit, en el que cada pixel está formado por los cuatro bytes, representando el canal alpha y las cantidades de rojo, verde y azul que componen cada pixel

La clase FilteredImageSource

Esta clase es una implementación del interfaz ImageProducer que toma una imagen y un objeto de tipo ImageFilter para generar una nueva imagen que es una versión filtrada de la imagen original. Las operaciones de filtrado pueden realizar una gran variedad de operaciones, como son el desplazamiento y sustitución de colores, la rotación de imágenes, etc.

La clase ImageFilter

Esta clase es una implementación del interfaz ImageConsumer. Además de los métodos declarados en el interfaz, hay métodos para implementar un filtro nulo, que no realiza modificación alguna sobre los datos que se le pasan.

Hay varias subclases que extienden esta clase base para permitir la manipulación de la imagen, como son RGBImageFilter, CropImageFilter, ReplicateScaleFilter y AreaAveragingScaleFilter.

La clase MemoryImageSource

Esta clase es una implementación del interfaz ImageProducer que utiliza un array de datos para generar los valores de los pixels de una imagen. Dispone de varios constructores que son:

  • Ancho y alto en pixels de la imagen que va a ser creada,

  • Modelo de color que se empleará en la conversión, si el constructor no requiere este parámetro, utilizará el modelo de color RGB por defecto

  • Un array de bytes o enteros conteniendo los valores a ser convertidos en pixel según el modelo de color especificado

  • Un offset para indicar el primer pixel dentro del array

  • El número de pixels por línea en el array

  • Un objeto de tipo Hashtable conteniendo las propiedades asociadas de la imagen, en caso de que la haya

En todos los casos, el constructor genera un objeto ImageProducer que se utiliza como un array de bytes o enteros para generar los datos de un objeto Image. Esta clase puede pasar múltiples imágenes a consumidores interesados en ellas, recordando a la funcionalidad multiframe que ofrece el formato gráfico GIF89a para producir animaciones.

La clase PixelGrabber

Esta es una clase de utilidad para convertir una imagen en un array de valores que corresponden a sus pixels. Implementa el interfaz ImageConsumer, que puede ser acoplado a un objeto Image o ImageProducer para realizar cualquier manipulación de esa imagen.

METODOS PARA MANEJO DE IMÁGENES

Métodos de Clipping

Clipping es el proceso por el que se define la zona del contexto gráfico en la que se van a realizar las modificaciones de los subsiguientes procesos de dibujo. Cualquier pixel que se encuentre fuera del área de clipping permanecerá inmune a toda modificación.

Los métodos que están involucrados son varios, unos que permiten fijar el rectángulo de clipping y otros que permiten obtener la zona de clipping actual.

clipRect( int,int,int,int ), realiza la intersección del rectángulo de clipping actual con el formado por los parámetros que se pasan al método. Este método solamente se puede utilizar para reducir el tamaño de la zona de clipping, no para aumentarla.

getClip(), devuelve la zona de clipping actual como un objeto de tipo Shape

getClipBounds(), devuelve el rectángulo que delimita el borde de la zona de clipping actual.

setClip (int,int,int,int ), fija el rectángulo de clipping actual al indicado en las cuatro coordenadas que se pasan como parámetro al método.

Hay varias formas distintas para el método drawImage(), que difieren fundamentalmente en las posibilidades de manipulación del método y los parámetros que hay que pasar para realizar esas manipulaciones. La siguiente llamada es solamente representativa del grupo, que se verán posteriormente.

drawImage( Image,int,int,int,int,int,int,int,int,Color,ImageObserver ), pinta sobre la zona indicada la imagen que se pasa como parámetro, escalándola sobre la marcha para que rellene completamente el área de destino.

No obstante, antes de entrar en el desarrollo de los diferentes métodos drawImage(), quizá sea presentar la clase Color, que es relativamente simple de entender y utilizar.

La clase Color

Esta clase es simple, encapsula los colores utilizando el formato RGB. En este formato, los colores se definen por sus componentes Rojo, Verde y Azul, representado cada uno de ellos por un número entero en el rango 0-255. En el caso del API Java2D, el espacio de color que se usa es el sRGB, un estándar del consorcio W3.

Hay otro modelo de color llamado HSB (matiz, saturación y brillo). La clase Color proporciona métodos de conveniencia para poder realizar la conversión entre un modelo y otro sin dificultad.

La clase Color proporciona variables estáticas finales que permiten el uso de cualquiera de los treinta colores, simplemente especificando su nombre. Para usar estas variables sólo es necesario referencias el color por su nombre de variable, por ejemplo

objeto.setBackground( Color.red );

Los valores predefinidos para los colores en esta clase son los que se muestran en la siguiente lista, todos ellos en el espacio sRGB:

  • black, negro

  • blue, azul

  • cyan, azul celeste

  • darkGray, gris oscuro

  • gray, gris

  • green, verde

  • lightGray, gris claro

  • magenta, violeta

  • orange, naranja

  • pink, rosa

  • red, rojo

  • white, blanco

  • yellow, amarillo

Los constructores de esta clase son tres, dos de los cuales permiten instanciar un nuevo objeto de tipo Color indicando las cantidades de rojo, verde y azul que entran en su composición mediante valores enteros en el rango 0 a 255:

Color( int,int,int )

El otro de los constructores que permite especificar la contribución de rojo, verde y azul al color final, admite valore flotantes en el rango 0.0 a 1.0:

Color( float,float,float )

Y el tercer constructor admite solamente un número entero en el cual se especifica el valor RGB, de forma que la cantidad de color rojo que interviene en el color final está especificada en los bits 16-23 del argumento, la cantidad de verde en los bits 8-15 y la cantidad de azul en los bits 0-7.

Color( int )

Métodos que devuelven un entero representando el valor RGB para un determinado objeto Color.

getRed(), devuelve el componente rojo del color como un entero en el rango 0 a 255.

getGreen(), devuelve la cantidad de verde que entra en la composición del objeto Color, en el rango 0 a 255.

getBlue(), devuelve el componente azul del color con un entero en el rango 0 a 255.

getRGB(), devuelve un entero representando el color RGB, utilizando los bits para indicar la cantidad de cada uno de los componentes rojo, verde y azul que entran en su composición. Los bits 24 a 31 del entero que devuelve el método son 0xff, los bits 16 a 23 son el valor rojo, los bits 8 a 15 son el valor verde y los bits 0 a 7 indican el valor del color azul. Siempre en el rango 0 a 255.

Los siguiente métodos devuelven un objeto de tipo Color, de forma que se pueden utilizar para crear objetos de este tipo.

brighter(), crea una versión más brillante del color.

darker(), crea una versión más oscura del color.

decode( String ), convierte una cadena a un entero y devuelve el color correspondiente.

Los métodos que se indican a continuación, también devuelven un objeto de tipo Color, pero están especializados para trabajar con el sistema a través de la clase Properties.

getColor( String ), busca un color entre las propiedades del sistema. El objeto String se utiliza como el valor clave en el esquema clave/valor utilizado para describir las propiedades en Java. El valor es entonces utilizado para devolver un objeto Color.

getColor( String,Color ), busca un color entre las propiedades del sistema. El segundo parámetro es el que se devuelve en el caso de que falle la búsqueda de la clave indicada en el objeto String.

getColor( String,int ), busca un color entre las propiedades del sistema. El segundo parámetro es utilizado para instanciar y devolver un objeto Color en el caso de que falle la búsqueda de la clave indicada en el objeto String.

Los siguientes métodos se utilizan para realizar la conversión entre el modelo de color RGB y el modelo HSB.

getHSBColor( float,float,float ), crea un objeto de tipo Color basado en los valores proporcionados por el modelo HSB.

HSBtoRGB( float,float,float ), convierte los componentes de un color, tal como se especifican en el modelo HSB, a su conjunto equivalente de valores en el modelo RGB.

RGBtoHSB( int,int,int,float[] ), convierte los componentes de un color, tal como se especifican en el modelo RGB, a los tres componentes del modelo HSB.

Y ya, los métodos que quedan son métodos de utilidad general, sin ninguna aplicación específica en lo que al Color respecta.

equals( Object ), determina si otro objeto es igual a un color.

hashCode(), calcula el código hash para un color.

toString(), crea una cadena representando al color, indicando el valor de sus componentes RGB.

El método drawImage():

Este método es el que se utiliza para presentar una imagen en pantalla; aunque hay métodos de otras clases que son utilizados para la manipulación de imágenes en Java, lo primero que se necesita es saber cómo se visualiza una imagen, y eso es lo que hace este método drawImage() de la clase Graphics.

drawImage( Image,int,int,Color,ImageObserver ), pinta la imagen que se indica situando su esquina superior izquierda en la coordenada que se pasa, en el contexto gráfico actual. Los pixeles transparentes se pintan en el color de fondo que se indica. Esta operación es equivalente a rellenar un rectángulo del ancho y alto de la imagen dada con un color y luego pintar la imagen sobre él, aunque probablemente más eficiente.

drawImage( Image,int,int,ImageObserver ), pinta la imagen que se indica situando su esquina superior izquierda en la coordenada que se pasa, en el contexto gráfico actual. Los pixeles transparentes de la imagen no se ven afectados. Este método retorna inmediatamente en todos los casos, incluso aunque la imagen completa no se haya terminado de cargar y no se haya presentado completamente en el dispositivo de salida.

drawImage( Image,int,int,int,int,Color,ImageObserver ), pinta la imagen que se pasa dentro del rectángulo que se indica en los parámetros, escalando esa imagen si es necesario. El método retorna inmediatamente, aunque la imagen no se haya cargado completamente. Si la representación de la imagen en el dispositivo de salida no se ha completado, entonces drawImage() devuelve el valor false.

drawImage( Image,int,int,int,int,ImageObserver ), pinta la imagen que se pasa dentro del rectángulo que se indica en los parámetros, escalando esa imagen si es necesario. El método retorna inmediatamente, aunque la imagen no se haya cargado completamente. Si la representación de la imagen en el dispositivo de salida no se ha completado, entonces drawImage() devuelve el valor false. El proceso que pinta las imágenes notifica al observador a través de su método imageUpdate().

drawImage( Image,int,int,int,int,int,int,int,int,Color,ImageObserver ).

drawImage( Image,int,int,int,int,int,int,int,int,ImageObserver ).

Ejemplo llamada a metodo:

public abstract boolean drawImage( Image img,

int x,

int y,

int width,

int height,

ImageObserver observer )

Los parámetros del método son:

img, la imagen que se quiere pintar
x e y, coordenadas para posicionar la esquina superior izquierda de la imagen
width y height, dimensiones del rectángulo sobre el que se posicionará la imagen
observer, objeto que ha de ser notificado tan pronto como la imagen se haya convertido y situado en su posición

En esta versión del método, la imagen se pintará dentro del rectángulo que se para en los parámetros y se escalará si es necesario. El método retorna inmediatamente, incluso aunque la imagen no se haya terminado de escalar o convertir al formato que admita el dispositivo de salida. Si esta conversión no se ha completado, drawImage() devuelve false, y como hay parte de imagen que no está procesada, el proceso que pinta la imagen notifica al observador a través de su método imageUpdate() y esa imagen continúa pintándose por trozos.

El método imageUpdate() pertenece a la clase Component, cuando es llamado, encola una llamada a repaint(), permitiendo que se pinta un trozo más de imagen sin que se interfiera la tarea o hilo de control principal. Hay también una propiedad, awt.image.incrementaldraw que determina si la imagen puede ser pintada en piezas, tal como se ha indicado antes. El valor por defecto para esta propiedad es true, en cuyo caso el sistema va pintado trozos de imagen según van llegando. Si el valor es false, el sistema esperará a que la imagen esté completamente cargada antes de pintarla.

Hay una segunda propiedad, awt.image.redrawrate que determina el período mínimo, en milisegundos, que debe haber entre llamadas a repaint() para imágenes. El valor por defecto es 100, y solamente se aplica cuando la propiedad anterior es true. Tanto esta propiedad como la anterior se pueden modificar, pero solamente sirve esa modificación para la ejecución actual del programa.

De los parámetros que se pasan al método drawImage(), todos resultan obvios, excepto quizá, el último de ellos, observer, que se refiere al objeto que debe ser notificado cuando la imagen esté disponible. Cuando se realiza una llamada a drawImage(), se lanza una tarea que carga la imagen solicitada. Hay un observador que monitoriza el proceso de carga; la tarea que está cargando la imagen notifica a ese observador cada vez que llegan nuevos datos. Para este parámetro se puede utilizar perfectamente this como observador en la llamada a drawImage(); es más, se puede decir que cualquier componente puede servir como observador para imágenes que se pintan sobre él. Quizá sea este el momento de entrar un poco más en detalle en la clase ImageObserver, e incluso antes en la clase Image, porque son los dos parámetros diferentes del típico entero que aparecen en la llamada a drawImage().

La clase Image:

La clase Image, como cualquier otra, está formada por una serie de constantes o variables, constructores y métodos. Uno de estos métodos es getScaledInstance(), que devuelve una versión escalada de una imagen. Uno de los parámetros de este método es un valor entero que especifica el algoritmo a utilizar para la realización del escalado. Se puede utilizar cualquiera de ellos, la tabla siguiente muestra su nombre y una pequeña descripción, si el lector necesita más detalles, debe recurrir como siempre se recomienda, a la documentación del JDK.

SCALE_AREA_AVERAGING, utiliza el algoritmo Area Averaging
SCALE_FAST, utiliza un algoritmo que proporcione mayor rapidez en el escalado, a costa de la suavidad de realización de ese escalado
SCALE_SMOOTH, al contrario que el anterior, sacrifica la velocidad por la suavidad de realización del escalado
SCALE_REPLICATE, utiliza un algoritmo de los internos de la clase ReplicateScaleFilter
SCALE_DEFAULT, utiliza el algoritmo de defecto
UndefinedProperty, un objeto de este tipo debe ser retornado siempre que una propiedad no se encuentre definida para una determinada imagen. Esta propiedad no se utiliza para el escalado, sino que es utilizada como valor de retorno del método getProperties() para indicar que la propiedad solicitada no está disponible.

Aunque la clase Image dispone de un constructor, es una clase abstracta, por lo que no se puede instanciar ningún objeto llamando directamente a este constructor. Se puede conseguir un objeto Image indirectamente por la invocación del método getImage() de las clases Applet o Toolkit. El método getImage() utiliza un hilo de ejecución, o tarea, separado para cargar la imagen. El resultado práctico de la invocación a getImage(), es la asociación entre una referencia de tipo Image y un fichero localizado en algún lugar que contiene la imagen que interesa. Otra forma de obtener un objeto Image es invocar al método createImage(), de las clases Component y Toolkit. La lista siguiente muestra una pequeña descripción de los métodos de la clase Image:

flush(), libera todos los recursos que utiliza el objeto Image

getGraphics(), crea un contexto gráfico para pintar una imagen en segundo plano

getHeight( ImageObserver ), determina la altura de la imagen

getWidth( ImageObserver ), determina la anchura de la imagen

getProperty( String,ImageObserver ), obtiene una propiedad de la imagen por su nombre

getScaledInstance( int,int,int ), crea una versión escalada de la imagen

getSource(), devuelve el objeto que produce los pixeles de la imagen

Algunos de estos métodos se utilizarán en los ejemplos que se presentan. No obstante, el interés no debe centrarse solamente en la clase Image, sino también en las otras clases que se necesitan para instanciar los parámetros de llamada a estos métodos, e incluso, algunas otras clases de soporte general. Por ello, aún a costa de resultar un poco ladrillo, se presenta a continuación una pequeña revisión de las clases más interesantes, MediaTracker e ImageProducer, ya que sobre las clases String, ImageObserver, Graphics y Object, que son las que intervienen en los métodos de la clase Image,
  1   2   3   4   5   6   7   8   9   10   11

Añadir el documento a tu blog o sitio web

similar:

Presentado a: juan carlos dìAZ iconCarátula: "Bártoli Guillermo, García Belsunce Horacio Carlos, Hurtig...

Presentado a: juan carlos dìAZ iconC. 89. 298 "Boragina, Juan Carlos, Miano, Marcelo Fabián y Iudica,...

Presentado a: juan carlos dìAZ iconLegajo nº 113 Ficha: 23 mesa, Juan Carlos

Presentado a: juan carlos dìAZ iconEntrevistas a Doctores Juan Carlos Arias, Michael Carstens, de gid américas

Presentado a: juan carlos dìAZ iconJuan Carlos Casas Rojo, Registrador de la Propiedad de Vitigudino...

Presentado a: juan carlos dìAZ icon“rodríguez nora etel c/ sucesión y/o sucesores de oliva juan carlos...

Presentado a: juan carlos dìAZ iconCarrasco Juan, Puente Marcela, Iturriaga Carlos, Moya Nelson, Islas...

Presentado a: juan carlos dìAZ iconLa Escuela Argentina de Taekwon-do agradece a la Fraternidad Guatemalteca...

Presentado a: juan carlos dìAZ iconPresentado por: presentado a

Presentado a: juan carlos dìAZ iconJuan Carlos Aravena, Héctor Fabián Ulloa, Héctor Daniel Telmo, Mario...






© 2015
contactos
m.exam-10.com