Redimensionar imagenes

25 views
Skip to first unread message

Mauricio Ferreyra

unread,
Apr 23, 2007, 6:27:53 PM4/23/07
to JavaSOS
Hola, Alguien sabe como puedo redimensionar una imagen? nunca he
trabajao con imagens en java, y me gustaria ante una imagen
seleccionada por el usuario redimensionarla y guardarla a mi
conveniencia.
Saludos....

Message has been deleted

Mauri Ferreyra

unread,
Apr 24, 2007, 2:07:22 PM4/24/07
to JavaSOS
no hay nada?
Message has been deleted

José Fuentes

unread,
Apr 24, 2007, 10:49:53 AM4/24/07
to jav...@googlegroups.com

Daniel

unread,
Apr 24, 2007, 3:58:50 PM4/24/07
to JavaSOS
Abajo te pego el codigo de una clase de java que te sirve para
encodear un jpg
De esa clase, si llamas al metodo encode (como lo hago con el ejemplo
en el metodo main) le podes pasar por parametro cual es la imagen que
queres manipular, el calidad, ancho y alto de la imagen de salida y el
nombre de ese archivo
Ah, y es gratis!

import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class MyJPGEncoder {

public static void main(String[] args) {
try {
String in = "java.jpg";
String out = "thumb.jpg";
int w = 50;
int h= 50;
int q = 45;
encode(in, out, w, h, q);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void encode(String strImage, String output, int
width, int height, int quality) throws Exception {
Image image = Toolkit.getDefaultToolkit().getImage(strImage);
MediaTracker mediaTracker = new MediaTracker(new Container());
mediaTracker.addImage(image, 0);
mediaTracker.waitForID(0);
// determine thumbnail size from WIDTH and HEIGHT
double thumbRatio = (double) width / (double) height;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double)
imageHeight;
if (thumbRatio < imageRatio) {
height = (int) (width / imageRatio);
} else {
width = (int) (height * imageRatio);
}
// draw original image to thumbnail image object and
// scale it to the new size on-the-fly
BufferedImage thumbImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(image, 0, 0, width, height, null);
// save thumbnail image to OUTFILE
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(output));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param =
encoder.getDefaultJPEGEncodeParam(thumbImage);
quality = Math.max(0, Math.min(quality, 100));
param.setQuality((float) quality / 100.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(thumbImage);
out.close();
System.out.println("Done: " + output);
}

}

On Apr 24, 3:07 pm, "Mauri Ferreyra" <maur...@gmail.com> wrote:
> no hay nada?

Oriol Jimenez

unread,
Apr 24, 2007, 6:08:38 AM4/24/07
to jav...@googlegroups.com
Hola! yo utilizo esta función:

public Image escalaImatge(Image rimage,int ancho,int alto) {
BufferedImage tnsImg = new BufferedImage(ancho,alto, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = tnsImg.createGraphics();        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2D.drawImage(rimage, 0, 0, ancho, alto, null);

return tnsImg;
}

Necesitarás importar

import java.awt.Graphics2D;

Hasta luego.


El día 24/04/07, Mauricio Ferreyra < mau...@gmail.com> escribió:
--
Oriol.

Mauri Ferreyra

unread,
Apr 25, 2007, 8:34:17 AM4/25/07
to jav...@googlegroups.com
Perfecto, salio con fritas.... utilice la clase de daniel...
Muchas Gracias...

José Fuentes

unread,
Apr 25, 2007, 11:58:34 AM4/25/07
to jav...@googlegroups.com
Yo uso esto, funciona con varios formatos (lee la documentación del método JAI.create() ):
 

<%

try
{
    //URL url = "// URL of the remote image to be read //";
    //RenderedImage image = JAI.create("url", url);
 String filename = "C:\\archivo.jpeg";
    RenderedImage img = JAI.create("fileload", filename);
 
 

 ColorModel     cm = img.getColorModel();
 int            w  = img.getWidth();
 int            h  = img.getHeight();
 WritableRaster raster = cm.createCompatibleWritableRaster(w,h);
 boolean        isAlphaPremultiplied = cm.isAlphaPremultiplied();
 Hashtable      props = new Hashtable();
 String []      keys = img.getPropertyNames();

 if (keys != null) {
  for (int i = 0 ; i < keys.length ; i++) {
   props.put(keys[i], img.getProperty(keys[i]));
  }
 }
 BufferedImage bImg = new BufferedImage(cm, raster,
            isAlphaPremultiplied,
            props);
 img.copyData(raster);
 
 Image scaledImage = bImg.getScaledInstance(50, 50, 50);

 String outputFilename = "C:\\testBYTEGRAY3.jpg";
 BufferedImage bufferedImage = new BufferedImage(50 , 50, BufferedImage.TYPE_BYTE_GRAY);
 bufferedImage.getGraphics().drawImage(scaledImage, 0, 0, null);


    RenderedOp op = JAI.create("filestore", bufferedImage, outputFilename, "JPEG");

 %>
 Done.<br>
 <img src="testBYTEGRAY3.jpg">
 <%
}
catch (Exception e)
{
 %>
 <%=e.getMessage()%>
 <%
}
%>

 

 
 
Saludos
 
Jose

Oriol Jimenez

unread,
May 3, 2007, 4:26:19 AM5/3/07
to jav...@googlegroups.com
Hola, es posible utilizar JAI para un applet? o para ejecutar el applet tambien se ha de instalar algo especial?

2007/4/25, José Fuentes < josecarl...@gmail.com>:



--
Oriol.

José Fuentes

unread,
May 4, 2007, 6:29:26 PM5/4/07
to jav...@googlegroups.com

Oriol Jimenez

unread,
May 7, 2007, 4:00:17 AM5/7/07
to jav...@googlegroups.com
Hola, esta misma url encontré por Internet, pero me da error en el applet y no se si hay que instalar alguna dll especial, el error que me da es:

java.lang.NoClassDefFoundError: javax/media/jai/PlanarImage
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0 (Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader (Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Aunque esto me lo da con la versión 1.5.0_10-b03, lo he probado también con la última de java y me parece que me da el mismo error.

El día 5/05/07, José Fuentes <josecarl...@gmail.com> escribió:



--
Oriol.

José Fuentes

unread,
May 8, 2007, 2:49:42 PM5/8/07
to jav...@googlegroups.com
Parece ser un problema de librerías y classpath.
 
Los requisitos que pide son:
 
  • For Microsoft Windows:
    • Windows 95, 98, ME, NT 4.0, 2000 or XP.
    • JavaTM 2 platform, Standard Edition, v1.3.0 or later. (v1.3.1 or later for the JavaTM Plug-In.) 
    • At least 7M bytes of free disk space
    • Optionally, an additional 6M bytes of free disk space for the sample code and images
    • An additional 10M bytes may be needed temporarily during the installation process
Mira esta página:
 
 
Jose

 
On 5/7/07, Oriol Jimenez <ori...@gmail.com> wrote:
Hola, esta misma url encontré por Internet, pero me da error en el applet y no se si hay que instalar alguna dll especial, el error que me da es:

java.lang.NoClassDefFoundError: javax/media/jai/PlanarImage
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0 (Unknown Source)

    at java.lang.Class.newInstance0 (Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet (Unknown Source)

    at sun.applet.AppletPanel.runLoader (Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Aunque esto me lo da con la versión 1.5.0_10-b03 , lo he probado también con la última de java y me parece que me da el mismo error.

José Eduardo Razo Fabre

unread,
May 8, 2007, 2:54:08 PM5/8/07
to jav...@googlegroups.com
agregaste tambien el jar de jai y agregado el path en el atributo archive del tag <applet> del html

El día 7/05/07, Oriol Jimenez <ori...@gmail.com> escribió:
Hola, esta misma url encontré por Internet, pero me da error en el applet y no se si hay que instalar alguna dll especial, el error que me da es:

java.lang.NoClassDefFoundError: javax/media/jai/PlanarImage
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0 (Unknown Source)

    at java.lang.Class.newInstance0 (Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet (Unknown Source)

    at sun.applet.AppletPanel.runLoader (Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Aunque esto me lo da con la versión 1.5.0_10-b03 , lo he probado también con la última de java y me parece que me da el mismo error.
LSC. Jos�© Eduardo Razo Fabre, MSC
lalo...@gmail.com
JERFSoft (c)
Tel: +52 (222) 2432779
Cel: +52 (222) 4256305
ICQ: 110975687
AIM: goldenhawkr
YIM: jerfmx
MSN: imperi...@hotmail.com
Linux User: 356663

José Eduardo Razo Fabre

unread,
May 8, 2007, 2:54:08 PM5/8/07
to jav...@googlegroups.com
agregaste tambien el jar de jai y agregado el path en el atributo archive del tag <applet> del html

El día 7/05/07, Oriol Jimenez <ori...@gmail.com> escribió:
Hola, esta misma url encontré por Internet, pero me da error en el applet y no se si hay que instalar alguna dll especial, el error que me da es:

java.lang.NoClassDefFoundError: javax/media/jai/PlanarImage
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0 (Unknown Source)

    at java.lang.Class.newInstance0 (Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet (Unknown Source)

    at sun.applet.AppletPanel.runLoader (Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Aunque esto me lo da con la versión 1.5.0_10-b03 , lo he probado también con la última de java y me parece que me da el mismo error.

Oriol Jimenez

unread,
May 9, 2007, 5:19:58 AM5/9/07
to jav...@googlegroups.com
Por lo que parece, es necesaria la instalación de librerias, por lo que no me sirve porque en mi caso, no me conviene hacer que los usuarios del programa se instalen paquetes adicionales, gracias por todo.

Oriol.

El día 8/05/07, José Fuentes <josecarl...@gmail.com> escribió:



--
Oriol.

José Fuentes

unread,
May 11, 2007, 3:03:56 PM5/11/07
to jav...@googlegroups.com
Si las librerías son .jar se pueden referenciar en el tag APPLET, y se descargan junto con el applet.
 
Jose

 
Reply all
Reply to author
Forward
0 new messages