Хотел бы знать, как создать анимированный gif для Blackberry Messenger, я преобразовал видео в анимированный gif с помощью Total Video Converter, он правильно отображается как изображение gif в каталоге изображений Blackberry, но при использовании в качестве изображения для отображения в мессенджере Blackberry он работает. не воспроизводится и выглядит смещенным, я видел несколько анимированных изображений в формате gif, которые отображаются правильно (т.е. воспроизводятся и правильно выровнены), есть ли способ создать анимированный gif из видео, которое будет воспроизводиться как изображение на дисплее в мессенджере Blackberry.
создать анимированный gif для отображения изображения BBM
Ответы (4)
BitmapField в наборе интерфейсов прикладного программирования (API) для смартфонов BlackBerry можно использовать для отображения изображений; однако он покажет только первый кадр анимированного GIF. Анимированные GIF-файлы в веб-содержимом можно отображать с помощью поля браузера; однако это может привести к ненужным накладным расходам в вашем приложении, если вам нужно только отобразить анимированное изображение.
В следующем примере BitmapField расширяется для создания нового класса с именем AnimatedGIFField. Этот класс может быть добавлен к экрану и принимает GIFEncodedImage, который он будет анимировать.
/A field that displays an animated GIF.
public class AnimatedGIFField extends BitmapField
{
private GIFEncodedImage _image; //The image to draw.
private int _currentFrame; //The current frame in
the animation sequence.
private int _width; //The width of the image
(background frame).
private int _height; //The height of the image
(background frame).
private AnimatorThread _animatorThread;
public AnimatedGIFField(GIFEncodedImage image)
{
this(image, 0);
}
public AnimatedGIFField(GIFEncodedImage image, long style)
{
//Call super to setup the field with the specified style.
//The image is passed in as well for the field to
//configure its required size.
super(image.getBitmap(), style);
//Store the image and it's dimensions.
_image = image;
_width = image.getWidth();
_height = image.getHeight();
//Start the animation thread.
_animatorThread = new AnimatorThread(this);
_animatorThread.start();
}
protected void paint(Graphics graphics)
{
//Call super.paint. This will draw the first background
//frame and handle any required focus drawing.
super.paint(graphics);
//Don't redraw the background if this is the first frame.
if (_currentFrame != 0)
{
//Draw the animation frame.
graphics.drawImage(_image.getFrameLeft(_currentFrame), _image.getFrameTop(_currentFrame),
_image.getFrameWidth(_currentFrame), _image.getFrameHeight(_currentFrame), _image, _currentFrame, 0, 0);
}
}
//Stop the animation thread when the screen the field is on is
//popped off of the display stack.
protected void onUndisplay()
{
_animatorThread.stop();
super.onUndisplay();
}
//A thread to handle the animation.
private class AnimatorThread extends Thread
{
private AnimatedGIFField _theField;
private boolean _keepGoing = true;
private int _totalFrames; //The total number of
frames in the image.
private int _loopCount; //The number of times the
animation has looped (completed).
private int _totalLoops; //The number of times the animation should loop (set in the image).
public AnimatorThread(AnimatedGIFField theField)
{
_theField = theField;
_totalFrames = _image.getFrameCount();
_totalLoops = _image.getIterations();
}
public synchronized void stop()
{
_keepGoing = false;
}
public void run()
{
while(_keepGoing)
{
//Invalidate the field so that it is redrawn.
UiApplication.getUiApplication().invokeAndWait(new Runnable()
{
public void run()
{
_theField.invalidate();
}
});
try
{
//Sleep for the current frame delay before
//the next frame is drawn.
sleep(_image.getFrameDelay(_currentFrame) * 10);
}
catch (InterruptedException iex)
{} //Couldn't sleep.
//Increment the frame.
++_currentFrame;
if (_currentFrame == _totalFrames)
{
//Reset back to frame 0 if we have reached the end.
_currentFrame = 0;
++_loopCount;
//Check if the animation should continue.
if (_loopCount == _totalLoops)
{
_keepGoing = false;
}
}
}
}
}
}
ПРИМЕЧАНИЕ. Изображения, добавляемые в проект, automatically
преобразуются в Portable Network Graphics (PNG) format
, когда приложение встроено в .cod file
. Это может вызвать проблему при добавлении анимированного GIF, поскольку этот процесс удалит анимацию. Есть два варианта решения этой проблемы.
Во-первых, откройте свойства проекта для своего приложения в среде разработки BlackBerry® Java® (BlackBerry JDE), щелкните вкладку компиляции и установите флажок «Не преобразовывать файлы изображений в png». Это предотвратит преобразование всех изображений в приложении, что может быть неэффективным, если в вашем проекте есть изображения в форматах, отличных от GIF и PNG.
Обходной путь для отдельного изображения — изменить расширение вашего GIF-изображения с .gif на другое (например, .bin). Это предотвратит преобразование изображения компилятором прикладной программы RIM (RAPC) в формат .png.
Вы также можете загрузить его в виде файла .java с здесь
Все, что вам нужно сделать, это ..
если у вас его еще нет, загрузите photoscape http://www.photoscape.org/ps/main/download.php ‹‹ это безопасно..введите описание изображения здесь
Откройте его, а затем нажмите «Создать гифку», а затем просто перетащите туда картинки.
как только вы получили свои фотографии. Нажмите на размер и выберите «установить размер холста».
Установите и с, и высоту на 150 или меньше, и GIF ДОЛЖЕН быть квадратным. Затем вы сохраняете его в своем ежевике, и он должен работать.
Холст GIF должен быть квадратным и его размер не должен превышать 31Кб.
Старый, но для справки: вы можете бесплатно создавать анимированные изображения для отображения bbm в Интернете по адресу http://www.flashdp.net а>