Создать растровое изображение из изображения - PullRequest
1 голос
/ 23 ноября 2011

У меня есть объект Image, представляющий собой изображение jpg, сделанное камерой, и мне нужно создать растровое изображение из него.

Есть ли способ сделать это, кроме использования BMPGenerator класса? Я работаю над коммерческим проектом и не думаю, что смогу использовать его из-за лицензии GPLv3.

Пока этот код у меня есть. Могу ли я что-то с этим сделать?

    FileConnection file = (FileConnection) Connector.open("file://" + imagePath, Connector.READ_WRITE);
    InputStream is = file.openInputStream();
    Image capturedImage = Image.createImage(is);

Я попробовал это, но я не смог получить правильный файл filepaht, и изображение застряло в ноль

    EncodedImage image = EncodedImage.getEncodedImageResource(filePath);
    byte[] array = image.getData();
    capturedBitmap = image.getBitmap();

Ответы [ 2 ]

6 голосов
/ 23 ноября 2011

Вы можете использовать videoControl.getSnapshot(null), а затем Bitmap myBitmap = Bitmap.createBitmapFromBytes(raw, 0, raw.length, 1), чтобы получить растровое изображение с камеры.

videoControl получается от player.getControl("VideoControl"), а player получается от Manager.createPlayer()

Кстати, а какой у вас образ? Если мы говорим о EncodedImage, вы можете просто использовать getBitmap() из него.

0 голосов
/ 25 ноября 2011

Исправлена! Ну, почти. Использовали следующий метод, но изображение повернуто на 90 градусов. Поправим это с this

public Bitmap loadIconFromSDcard(String imgname){

    FileConnection fcon = null;
    Bitmap icon = null;

    try {

        fcon = (FileConnection)Connector.open(imgname, Connector.READ);
        if(fcon.exists()) {
            byte[] content = new byte[(int) fcon.fileSize()];
              int readOffset = 0;
              int readBytes = 0;
              int bytesToRead = content.length - readOffset;
              InputStream is = fcon.openInputStream();
              while (bytesToRead > 0) {
                readBytes = is.read(content, readOffset, bytesToRead);
                if (readBytes < 0) {
                  break;
                }
                readOffset += readBytes;
                bytesToRead -= readBytes;
              }
              is.close();
            EncodedImage image = EncodedImage.createEncodedImage(content,0,content.length);
            icon = image.getBitmap();

        }

    } catch (Exception e) {

    }finally{
        // Close the connections
        try{ if(fcon != null) fcon.close(); }
        catch(Exception e){}
    }

    return icon;
} 
...