Я хотел знать, можем ли мы изменить размер изображения. Предположим, хотим ли мы нарисовать изображение размером 200x200 с размером 100 x 100 на нашем экране BlackBerry.Blackberry - как изменить размер изображения?
Благодаря
Я хотел знать, можем ли мы изменить размер изображения. Предположим, хотим ли мы нарисовать изображение размером 200x200 с размером 100 x 100 на нашем экране BlackBerry.Blackberry - как изменить размер изображения?
Благодаря
Просто альтернатива:
BlackBerry - draw image on the screen
BlackBerry - image 3D transform
Я не Blackberry программист, но я полагаю, что некоторые из этих ссылок поможет вам:
Image Resizing Article
Resizing a Bitmap on the Blackberry
Blackberry Image Scaling Question
Имейте в виду, что масштабирование изображения по умолчанию, выполняемое BlackBerry, довольно примитивно и, как правило, выглядит не очень хорошо. Если вы создаете для 5.0, есть new API, чтобы сделать гораздо лучшее масштабирование изображений с использованием таких фильтров, как билинейный или Lanczos.
Вы можете сделать это довольно просто, используя метод EncodedImage.scaleImage32()
. Вам нужно будет предоставить ему факторы, с помощью которых вы хотите масштабировать ширину и высоту (как Fixed32
).
Вот пример кода, который определяет масштабный коэффициент для ширины и высоты путем деления исходного размера изображения на желаемый размер, используя класс RIM Fixed32
.
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);
}
Если вы достаточно удачливы, чтобы быть разработчиком для OS 5.0, Марк разместил ссылку на new APIs, которые намного четче и более универсален, чем тот, который я описал выше. Например:
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;
}
(Естественно, вы можете заменить/опции масштабирования фильтра на основе ваших потребностей.)
@TreeUK: У меня есть эта точная функция в рабочем коде прямо сейчас. Преобразуете ли вы 'int' в 'Fixed32' и используете' Fixed32.div() 'для определения масштабных коэффициентов? Нормальное целочисленное деление не будет сокращать его. – Skrud
Спасибо, использовал его неправильно. Не целое связанное, но все же неправильное. –
для BlackBerry JDE 5.0 или более поздней версии, вы можете использовать scaleInto API.
Вот функция или вы можете сказать, метод, чтобы изменить размер изображения, использовать его, как вы хотите:
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;
}
просто вызовите этот метод и удерживайте его в растровой картинке. ... – Blackberry
scaleInto() для Bitmap доступен с OS 5.0. – Lucas
@ Лукас Да, с тех пор BlackBerry API 5.0.0 – Blackberry
Я отправляю это ответы на новичка в разработке Blackberry приложений. Ниже код для обработки растровых изображений из URL и изменение размера их без loass от Соотношение сторон:
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;
}
Метод resizeImage вызывается внутри метода imageFromServer (String URL). 1) изображение с сервера обрабатывается с использованием EncodedImage img. 2) Bitmap bitmp = resizeImage (img.getBitmap(), 100, 100); Параметры передаются в resizeImage(), а возвращаемое значение из resizeImage() устанавливается в Bitmap bitmp.
Спасибо. эти статьи великолепны! Оно работает. – Bohemian