Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda en J2ME

Estas en el tema de Ayuda en J2ME en el foro de Java en Foros del Web. Hola, He leido en un post una duda similar a la mia, pero, no obstante no me sirve de ayuda. Esto haciendo un proyecto en ...
  #1 (permalink)  
Antiguo 03/11/2008, 08:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Sonrisa Ayuda en J2ME

Hola,

He leido en un post una duda similar a la mia, pero, no obstante no me sirve de ayuda.
Esto haciendo un proyecto en el Netbeans con j2me, quiero ajustar fotos y videos a la pantalla del telefono movil, ya que, la mayoria de ellas o son mas grandes o mas pequeñas que mi pantalla, ¿como puedo ajustarlas al tamaño de la pantalla?. Realmente necesito vuestra ayuda.

Gracias de antemano.
  #2 (permalink)  
Antiguo 04/11/2008, 15:25
 
Fecha de Ingreso: septiembre-2008
Ubicación: Córdoba
Mensajes: 67
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda en J2ME

Con un editor de imagenes como photoshop o gimp, redimensionas la imagen al tamaño que necesites!!

Saludos
  #3 (permalink)  
Antiguo 04/11/2008, 20:56
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 22 años, 5 meses
Puntos: 15
Respuesta: Ayuda en J2ME

Jaja que buena respuesta PachuG.

Mira vanessa te pongo una funcion para redimensionar una imagen, tu le tienes que pasar como parametros, la imagen a redimensionar y el ancho y alto con la que quieras que se cree la nueva imagen:

Código PHP:
public Image redimensionarImagen(Image imagenOriginal, int nuevoAncho, int nuevoAlto) {
  
//Inicializaciones
  
int originalAncho= imagenOriginal.getWidth();
  
int originalAlto= imagenOriginal.getHeight();
  
Image imagenFinal = Image.createImage(nuevoAncho, nuevoAlto);
  
Graphics g = imagenFinal.getGraphics();
  
//Bucles que tratan el reescalado
  
for(int y=0; y < nuevoAlto, y++){
    for(
int x=0; x < nuevoAncho, x++) {
        
g.setClip(x, y, 1, 1);
        
int xAux = x * originalAncho/ nuevoAncho;
        
int yAux = y * originalAlto/ nuevoAlto;
        
g.drawImage(imagenOriginal, x-xAux, y-yAux, Graphics.LEFT | Graphics.TOP);
     }
  }
  return 
Image.createImage(imagenFinal);
} 
En tu midlet tendrias que obtener el ancho y alto de la pantalla en que se esta ejecutando y pasarle eso como parametros a esta funcion, si quieres que se vea en toda la pantalla no te olvides de hacer el FullscreenMode. Saludos.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #4 (permalink)  
Antiguo 05/11/2008, 05:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Ayuda en J2ME

Muchisimas gracias por el metodo, funciona a la perfección.
Gracias de nuevo
  #5 (permalink)  
Antiguo 17/03/2009, 02:44
Avatar de eggman  
Fecha de Ingreso: octubre-2005
Mensajes: 17
Antigüedad: 21 años
Puntos: 0
Respuesta: Ayuda en J2ME

La función reescala las imagenes perfectamente, pero consume una barbaridad de memoria y hace que se 'bloquee' el móvil.

Alguna otra función o idea para depurarla???
  #6 (permalink)  
Antiguo 18/03/2009, 02:22
Avatar de eggman  
Fecha de Ingreso: octubre-2005
Mensajes: 17
Antigüedad: 21 años
Puntos: 0
De acuerdo Respuesta: Ayuda en J2ME

Ya encontré una función que reescala con un rendimiento infinitamente mejor:

Código PHP:
/**
  * This methog resizes an image by resampling its pixels
  * @param src The image to be resized
  * @return The resized image
  */

  
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 Resize        

      
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 resize

      
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;

  }
//resize image 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:09.