style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Manipular imagenes

Hola amigos de la mejor comunidad en mexico, tengo un problema que espero que me puedan ayudar, les explico, tengo un JPanel en el cual al darle doble click lanzo un JFileChooser, busco un archivo JPG en la estructura de directorios( LINUX), hasta ahora ya puedo cargar la imagen en el JPanel pero lo que mas me interesa es colocar la imagen en el JPanel( el cual tiene un tamaño predeterminado) y que esta imagen ocupe solamente el tamaño del JPanel( reducirla en caso de que la imagen sea muy grande, pero k se muestre la imagen completa), si alguien tiene una ide de como realizar este tipo de apliacion o alguna pag, o que clases me recomiendad usar se los agradeceria muchisimo.

atte
jorge

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Gabriel

Alguna vez llegue a ahcer

Alguna vez llegue a ahcer algo de esto, necesitas meterte con Graphics, y BufferedImage, y noc si necesitaras un algoritmo de escalamiento de imagen o con ImageTransform puedas hacerlo, dejame y reviso algo de esto a ver que encuentro.

Saludos,

Sun Certified Java Developer
Sun Certified Java Programer
Brainbench Certified JavaServer Pages

Imagen de Gabriel

Ok aqui esta lo que

Ok aqui esta lo que encontre

en este link hay un metodo que le pasas un Image y regresa un BufferedImage y en este otro link no dice mucho pero te da una idea de escalar, transformar y rotar una imagen. Ahora necesitaras pasar tu AffineTransformOp que sera tu resultado final a una imagen, a no ser de que ya tu Image o BufferedImage sea modificado junto con la operacion, revisalo y me dices si te sirve

Saludos,

Sun Certified Java Developer
Sun Certified Java Programer
Brainbench Certified JavaServer Pages

Imagen de iberck

Jorge: Intenta escalar la

Jorge:
Intenta escalar la imágen con el siguiente código:

private Image resizeImage(Image src) {
        int srcWidth = src.getWidth();
        int srcHeight = src.getHeight();
        Image tmp = Image.createImage(screenWidth, srcHeight);
        Graphics g = tmp.getGraphics();
        int ratio = (srcWidth << 16) / screenWidth;
        int pos = ratio/2;
       
        //Horizontal
        for (int x = 0; x < screenWidth; x++) {
            g.setClip(x, 0, 1, srcHeight);
            g.drawImage(src, x - (pos >> 16), 0, Graphics.LEFT | Graphics.TOP);
            pos += ratio;
        }
       
        Image resizedImage = Image.createImage(screenWidth, screenHeight);
        g = resizedImage.getGraphics();
        ratio = (srcHeight << 16) / screenHeight;
        pos = ratio/2;
       
        //Vertical
        for (int y = 0; y < screenHeight; y++) {
            g.setClip(0, y, screenWidth, 1);
            g.drawImage(tmp, 0, y - (pos >> 16), Graphics.LEFT | Graphics.TOP);
            pos += ratio;
        }
        return resizedImage;
       
    }

screenWidth y screenHeight son el ancho y alto de tu jPanel,
intenta manejar una imágen de buena calidad para evitar perder resolución en
los escalamientos.

iberck

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">