Volevo sapere se possiamo ridimensionare un'immagine. Supponiamo di voler disegnare un'immagine di dimensioni reali di 200x200 con una dimensione di 100 x 100 sul nostro schermo di blackberry.Blackberry - come ridimensionare l'immagine?
Grazie
Volevo sapere se possiamo ridimensionare un'immagine. Supponiamo di voler disegnare un'immagine di dimensioni reali di 200x200 con una dimensione di 100 x 100 sul nostro schermo di blackberry.Blackberry - come ridimensionare l'immagine?
Grazie
solo un'alternativa:
BlackBerry - draw image on the screen
BlackBerry - image 3D transform
Io non sono un programmatore Blackberry, ma credo che alcuni di questi link vi aiuterà a uscire:
Image Resizing Article
Resizing a Bitmap on the Blackberry
Blackberry Image Scaling Question
Ricordare che il ridimensionamento di immagine predefinito eseguito da BlackBerry è piuttosto primitivo e generalmente non sembra molto buono. Se stai costruendo per 5.0 c'è un new API per fare scalare le immagini molto meglio usando filtri come bilineare o Lanczos.
È possibile farlo abbastanza semplicemente utilizzando il metodo EncodedImage.scaleImage32()
. Dovrai fornirgli i fattori con cui vuoi ridimensionare la larghezza e l'altezza (come Fixed32
).
Ecco un esempio di codice che determina il fattore di scala per la larghezza e l'altezza dividendo la dimensione dell'immagine originale per la dimensione desiderata, utilizzando la classe Fixed32
di 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);
}
Se si ha la fortuna di essere sviluppatori per OS 5.0, Marc postato un link al new APIs che sono molto più chiara e più versatile di quello che ho descritto sopra. Per esempio:
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 è possibile sostituire le/opzioni di filtro di scala in base alle vostre esigenze.)
@TreeUK: ho quella funzione esatta nel codice di lavoro in questo momento. Stai convertendo 'int's in' Fixed32' e usando 'Fixed32.div()' per calcolare i fattori di scala? La divisione intera normale non la taglierà. – Skrud
Grazie, stava usando in modo errato. Non intero correlato, ma ancora sbagliato. –
per BlackBerry JDE 5.0 o versioni successive, è possibile utilizzare l'API scaleInto.
Ecco la funzione o si può dire metodo per ridimensionare l'immagine, lo usano come si vuole:
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;
}
chiama questo metodo e tieni questo in una bitmap ... goditi – Blackberry
scaleInto() per Bitmap è disponibile da OS 5.0. – Lucas
@ Lucas Sì, lo è stato dall'API BlackBerry 5.0.0 – Blackberry
sto inviando questo risposte per novizio in sviluppo Blackberry Application. Qui di seguito è il codice per l'elaborazione di immagini bitmap da URL e il ridimensionamento senza loass di Aspect Ratio:
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;
}
Il Metodo ResizeImage è chiamato all'interno del metodo imageFromServer (String url). 1) l'immagine dal server viene elaborata usando EncodedImage img. 2) Bitmap bitmp = resizeImage (img.getBitmap(), 100, 100); I parametri vengono passati a resizeImage() e il valore restituito da resizeImage() è impostato su Bitmap bitmap.
Grazie. questi articoli sono fantastici !! Funziona. – Bohemian