создать анимированный GIF для картинки дисплея BBM - PullRequest
0 голосов
/ 22 июня 2011

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

Ответы [ 4 ]

1 голос
/ 09 июля 2011

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 с здесь

1 голос
/ 13 февраля 2012

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

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

  • Откройте его, а затем нажмите, чтобы сделать GIF, а затем просто перетащите туда картинки.

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

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

0 голосов
/ 27 января 2014

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

0 голосов
/ 09 июля 2011

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

...