RecordStore и фотографии сделанные с телефона - PullRequest
0 голосов
/ 15 июня 2011

Когда пользователь делает фотографии с помощью своего телефона, я хочу, чтобы LWUIT получил конкретную фотографию, чтобы добавить ее в хранилище записей, а затем получить эту фотографию.Как этого добиться?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Хорошо, я делаю приложение запускает камеру с помощью команды:

mPlayer = Manager.createPlayer("capture://video");
mPlayer.realize();

mVideoControl = (VideoControl) mPlayer.getControl("VideoControl");

Canvas canvas = new CameraCanvas(this, mVideoControl);
canvas.addCommand(mBackCommand);
canvas.addCommand(mCaptureCommand);
canvas.setCommandListener(this);
mDisplay.setCurrent(canvas);
mPlayer.start();

В действии, выполненном из команды mCaptureCommand:

public void capture() {
        try {
            // Get the image.
            byte[] raw = mVideoControl.getSnapshot(null);
//                    "encoding=png&width=320&height=240");
            bytelen = raw.length;
            Image image = Image.createImage(raw, 0, raw.length);

            Image thumb = createThumbnail(image);

            // Place it in the main form.
            if (mMainForm.size() > 0 && mMainForm.get(0) instanceof StringItem) {
                mMainForm.delete(0);
            }
            mMainForm.append(thumb);

            // Flip back to the main form.
            mDisplay.setCurrent(mMainForm);

            // Shut down the player.
            mPlayer.close();
            mPlayer = null;
            mVideoControl = null;
        } catch (MediaException me) {
            handleException(me);
        }
    }

Код createThumbnail:

private Image createThumbnail(Image image) {
        int sourceWidth = image.getWidth();
        int sourceHeight = image.getHeight();

        int thumbWidth = 64;
        int thumbHeight = -1;

        if (thumbHeight == -1) {
            thumbHeight = thumbWidth * sourceHeight / sourceWidth;
        }

        Image thumb = Image.createImage(thumbWidth, thumbHeight);
        Graphics g = thumb.getGraphics();

        for (int y = 0; y < thumbHeight; y++) {
            for (int x = 0; x < thumbWidth; x++) {
                g.setClip(x, y, 1, 1);
                int dx = x * sourceWidth / thumbWidth;
                int dy = y * sourceHeight / thumbHeight;
                g.drawImage(image, x - dx, y - dy, Graphics.LEFT | Graphics.TOP);
            }
        }
        Image immutableThumb = Image.createImage(thumb);
        return immutableThumb;
    }

Теперь я не знаю, где хранится изображение при вызове метода createThumbnail, то есть после вызова Image.createImage: есть два вызова createImage, один в методе capture () и один в методе createThumbnail (),Но моя настоящая проблема заключается в том, чтобы знать местоположение созданного образа и как связать его с идентификатором хранилища для банковского клиента.

1 голос
/ 15 июня 2011

RMS не подходит для хранения фотографий.Потому что RMS рассчитана на небольшой объем хранилища.Вы не можете обрабатывать огромный объем данных.Лучше вы можете читать из памяти телефона или карты памяти.Кроме того, как вы можете сделать снимок без вашего приложения?

Редактировать:

Вы можете разработать приложение для , сделав снимок и сохранить его в RMS (но не в большом количестве) или сохранитьсервер через вызов веб-сервис .

...