Quería saber si podemos cambiar el tamaño de una imagen. Supongamos que queremos dibujar una imagen de tamaño real de 200x200 con un tamaño de 100 x 100 en nuestra pantalla de Blackberry.Blackberry: cómo cambiar el tamaño de la imagen?
Gracias
Quería saber si podemos cambiar el tamaño de una imagen. Supongamos que queremos dibujar una imagen de tamaño real de 200x200 con un tamaño de 100 x 100 en nuestra pantalla de Blackberry.Blackberry: cómo cambiar el tamaño de la imagen?
Gracias
sólo una alternativa:
BlackBerry - draw image on the screen
BlackBerry - image 3D transform
No soy un programador de Blackberry, pero creo que algunos de estos enlaces le ayudará a cabo:
Image Resizing Article
Resizing a Bitmap on the Blackberry
Blackberry Image Scaling Question
Tenga en cuenta que la escala de imagen predeterminada hecha por BlackBerry es bastante primitiva y, en general, no se ve muy bien. Si está compilando para 5.0, hay un new API para mejorar la escala de imagen usando filtros como bilineal o Lanczos.
Puede hacer esto simplemente usando el método EncodedImage.scaleImage32()
. Necesitará proporcionarle los factores por los cuales desea escalar el ancho y alto (como Fixed32
).
Aquí hay un código de muestra que determina el factor de escala para el ancho y la altura dividiendo el tamaño de la imagen original por el tamaño deseado, utilizando la clase Fixed32
de RIM.
public static EncodedImage resizeImage(EncodedImage image, int newWidth, int newHeight) {
int scaleFactorX = Fixed32.div(Fixed32.toFP(image.getWidth()), Fixed32.toFP(newWidth));
int scaleFactorY = Fixed32.div(Fixed32.toFP(image.getHeight()), Fixed32.toFP(newHeight));
return image.scaleImage32(scaleFactorX, scaleFactorY);
}
Si tienes la suerte de ser desarrollador para OS 5.0, Marc publicó un enlace a la new APIs que son mucho más claro y más versátil que el que he descrito anteriormente. Por ejemplo:
public static Bitmap resizeImage(Bitmap originalImage, int newWidth, int newHeight) {
Bitmap newImage = new Bitmap(newWidth, newHeight);
originalImage.scaleInto(newImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FILL);
return newImage;
}
(Naturalmente se puede sustituir las opciones de filtro/escala en base a sus necesidades.)
@TreeUK: Tengo esa función exacta en el código de trabajo en este momento. ¿Está convirtiendo el 'int's en' Fixed32' y usando 'Fixed32.div()' para descubrir los factores de escala? La división entera normal no lo cortará. – Skrud
Gracias, lo estaba usando incorrectamente. No está relacionado con enteros, pero aún está mal. –
para BlackBerry JDE 5.0 o posterior, puede utilizar la API de scaleInto.
Aquí es la función o se puede decir método para cambiar el tamaño de la imagen, lo utilizan como desee:
int olddWidth;
int olddHeight;
int dispplayWidth;
int dispplayHeight;
EncodedImage ei2 = EncodedImage.getEncodedImageResource("add2.png");
olddWidth = ei2.getWidth();
olddHeight = ei2.getHeight();
dispplayWidth = 40;\\here pass the width u want in pixels
dispplayHeight = 80;\\here pass the height u want in pixels again
int numeerator = net.rim.device.api.math.Fixed32.toFP(olddWidth);
int denoominator = net.rim.device.api.math.Fixed32.toFP(dispplayWidth);
int widtthScale = net.rim.device.api.math.Fixed32.div(numeerator, denoominator);
numeerator = net.rim.device.api.math.Fixed32.toFP(olddHeight);
denoominator = net.rim.device.api.math.Fixed32.toFP(dispplayHeight);
int heighhtScale = net.rim.device.api.math.Fixed32.div(numeerator, denoominator);
EncodedImage newEi2 = ei2.scaleImage32(widtthScale, heighhtScale);
Bitmap _add =newEi2.getBitmap();
in this there is two bitmap.temp is holding the old bitmap.In this method you just pass
bitmap ,width,height.it return new bitmap of your choice.
Bitmap ImgResizer(Bitmap bitmap , int width , int height){
Bitmap temp=new Bitmap(width,height);
Bitmap resized_Bitmap = bitmap;
temp.createAlpha(Bitmap.HOURGLASS);
resized_Bitmap.scaleInto(temp , Bitmap.FILTER_LANCZOS);
return temp;
}
simplemente llame a este método y manténgalo en un mapa de bits ... disfrute – Blackberry
scaleInto() para mapa de bits está disponible desde OS 5.0. – Lucas
@Lucas Sí, ha sido desde BlackBerry API 5.0.0 – Blackberry
Estoy publicar respuestas para este novato en el desarrollo de aplicaciones de Blackberry. A continuación es el código para el procesamiento de imágenes de mapa de bits de URL y cambiar el tamaño de ellos sin loass de Relación de aspecto:
public static Bitmap imageFromServer(String url)
{
Bitmap bitmp = null;
try{
HttpConnection fcon = (HttpConnection)Connector.open(url);
int rc = fcon.getResponseCode();
if(rc!=HttpConnection.HTTP_OK)
{
throw new IOException("Http Response Code : " + rc);
}
InputStream httpInput = fcon.openDataInputStream();
InputStream inp = httpInput;
byte[] b = IOUtilities.streamToBytes(inp);
EncodedImage img = EncodedImage.createEncodedImage(b, 0, b.length);
bitmp = resizeImage(img.getBitmap(), 100, 100);
}
catch(Exception e)
{
Dialog.alert("Exception : " + e.getMessage());
}
return bitmp;
}
public static Bitmap resizeImage(Bitmap originalImg, int newWidth, int newHeight)
{
Bitmap scaledImage = new Bitmap(newWidth, newHeight);
originalImg.scaleInto(scaledImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FIT);
return scaledImage;
}
El Método resizeImage se llama dentro de la imageFromServer (String url). 1) la imagen del servidor se procesa utilizando EncodedImage img. 2) Bitmap bitmp = resizeImage (img.getBitmap(), 100, 100); los parámetros se pasan a resizeImage() y el valor de retorno de resizeImage() se establece en bitmap bitmp.
Gracias. estos artículos son geniales !! Funciona. – Bohemian