создать анимированный gif для отображения изображения BBM

Хотел бы знать, как создать анимированный gif для Blackberry Messenger, я преобразовал видео в анимированный gif с помощью Total Video Converter, он правильно отображается как изображение gif в каталоге изображений Blackberry, но при использовании в качестве изображения для отображения в мессенджере Blackberry он работает. не воспроизводится и выглядит смещенным, я видел несколько анимированных изображений в формате gif, которые отображаются правильно (т.е. воспроизводятся и правильно выровнены), есть ли способ создать анимированный gif из видео, которое будет воспроизводиться как изображение на дисплее в мессенджере Blackberry.


person Zee    schedule 22.06.2011    source источник


Ответы (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, поскольку этот процесс удалит анимацию. Есть два варианта решения этой проблемы.

  1. Во-первых, откройте свойства проекта для своего приложения в среде разработки BlackBerry® Java® (BlackBerry JDE), щелкните вкладку компиляции и установите флажок «Не преобразовывать файлы изображений в png». Это предотвратит преобразование всех изображений в приложении, что может быть неэффективным, если в вашем проекте есть изображения в форматах, отличных от GIF и PNG.

  2. Обходной путь для отдельного изображения — изменить расширение вашего GIF-изображения с .gif на другое (например, .bin). Это предотвратит преобразование изображения компилятором прикладной программы RIM (RAPC) в формат .png.

Вы также можете загрузить его в виде файла .java с здесь

person BBdev    schedule 09.07.2011

Все, что вам нужно сделать, это ..

  • если у вас его еще нет, загрузите photoscape http://www.photoscape.org/ps/main/download.php ‹‹ это безопасно..введите описание изображения здесь

  • Откройте его, а затем нажмите «Создать гифку», а затем просто перетащите туда картинки.

  • как только вы получили свои фотографии. Нажмите на размер и выберите «установить размер холста».

  • Установите и с, и высоту на 150 или меньше, и GIF ДОЛЖЕН быть квадратным. Затем вы сохраняете его в своем ежевике, и он должен работать.

person Gabriele    schedule 13.02.2012

Холст GIF должен быть квадратным и его размер не должен превышать 31Кб.

person ronald    schedule 09.07.2011

Старый, но для справки: вы можете бесплатно создавать анимированные изображения для отображения bbm в Интернете по адресу http://www.flashdp.net

person Neo Ighodaro    schedule 27.01.2014