Как сохранить захваченное изображение в папке в Blackberry? - PullRequest
2 голосов
/ 30 декабря 2011

Я занимаюсь разработкой приложения с функциями камеры.Я хочу сохранить это захваченное изображение в папке моего проекта. Может ли кто-нибудь помочь мне, пожалуйста.Спасибо заранее.

Ответы [ 4 ]

2 голосов
/ 30 декабря 2011

Этот код ниже может помочь вам:

Добавьте это на главный экран, на котором вы хотите показать камеру:

captureImage=new MenuItem("Capture Images",10,100) 
{           
    public void run() 
    {
        synchronized (Application.getEventLock()) 
        {
            captureImage();
        }               
    }
};          
addMenuItem(captureImage);

Код для Метод captureImage () :

private void captureImage() 
{
    try 
    {
        player = javax.microedition.media.Manager.createPlayer("capture://video?encoding=jpeg&width=1024&height=768");
        player.realize();
        _videoControl = (VideoControl) player.getControl("VideoControl");

        if (_videoControl != null)
        {
            Field videoField = (Field) _videoControl.initDisplayMode (VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");
            _videoControl.setDisplayFullScreen(true);
            _videoControl.setVisible(true);
            player.start();

            if(videoField != null)
            {
                add(videoField);
            }
        } 
    }
    catch(Exception e)
    {
        if(player!=null)
        {
            player.close();
        }
        Dialog.alert(e.toString());
    }       
}

Приведенный ниже код сохраняет изображение на SD-карту или карту устройства.Переопределите invokeAction (int action) Метод

protected boolean invokeAction(int action)
{
    boolean handled = super.invokeAction(action); 

    if(SdcardTest.SdcardAvailabulity())//I am checking here that the sdcard is there of or not.....?    
    {
          //PATH = "file:///SDCard/BlackBerry/pictures/"+"Image_"+System.currentTimeMillis()+".jpg"; 
          PATH = System.getProperty("fileconn.dir.memorycard.photos")+"Image_"+System.currentTimeMillis()+".jpg";//here "str" having the current Date and Time;
    }            
    else 
    {
        PATH = System.getProperty("fileconn.dir.photos")+"Image_"+System.currentTimeMillis()+".jpg"; 
    }
    if(!handled)
    {
        if(action == ACTION_INVOKE)
        {   
            try
            {                      
                byte[] rawImage = _videoControl.getSnapshot(null);
                fileconn=(FileConnection)Connector.open(PATH);
                if(fileconn.exists())
                {
                    fileconn.delete();
                }
                fileconn.create();
                OutputStream os=fileconn.openOutputStream();
                os.write(rawImage);
                fileconn.close();
                os.close();
                Status.show("Image is Captured",200);
                if(player!=null)
                    player.close();                                       
            }
            catch(Exception e)
            {
                if(player!=null)
                {
                    player.close();
                }
                if(fileconn!=null)
                {
                    try 
                    {
                        fileconn.close();
                    } 
                    catch (IOException e1) 
                    { 
                               //if the action is other than click the trackwheel(means go to the menu options) then we do nothing;
                    }
                }                      
            }
        }
    }           
    return handled;                
}
1 голос
/ 30 декабря 2011

попробуйте это для привязки изображения

Примечание: вы не можете хранить в папке ресурсов, вы можете хранить только на SD-карте

 class screen extends MainScreen implements FieldChangeListener
    {
        private VideoControl vc;
        private String encoding;
        private Player p;
        private Field viewFinder;
        private BitmapField bitmapField;
        private ButtonField btn;
        public screen() {
            btn=new ButtonField("snap",Field.FOCUSABLE);
            btn.setChangeListener(this);
            add(btn);
        }
        public void fieldChanged(Field field, int context) {
            if(field==btn)
            {
                try{                        
                    p = Manager.createPlayer("capture://video");                        
                    p.realize();
                    p.prefetch();
                    p.start();
                    vc = (VideoControl) p.getControl("VideoControl");
                    viewFinder = (Field)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");
                    vc.setVisible(true);    
                    final String imageType = "encoding=jpeg&width=640&height=480&quality=superfine";

                    UiApplication.getUiApplication().invokeLater(new Runnable(){
                        public void run(){

byte[] image = vc.getSnapshot(imageType);
                        FileConnection conn = (FileConnection)Connector.open("file:///store/home/user/pictures/"+System.currentTimeMillis()+".jpeg", Connector.READ_WRITE);
                        conn.create();
                        OutputStream out = conn.openOutputStream();
                        out.write(image);
                        out.flush();
                        out.close();
                        conn.close();  
                                Bitmap image1 = Bitmap.createBitmapFromBytes(imageBytes, 0, imageBytes.length, 4);
                                bitmapField.setBitmap(image1);
                                add(bitmapField);                           


                        }
                    });

                } catch (Exception me){

                }
            }

        }
    }

для дополнительных операций используйте это http://supportforums.blackberry.com/rim/attachments/rim/java_dev@tkb/226/1/SnapshotSample.zip

1 голос
/ 30 декабря 2011

Если вы хотите сохранить изображение с камеры на ваше устройство, вы можете использовать следующий код:

 try 
                {
                        focusControl.startAutoFocus(); 
                        byte[] image = videoControl.getSnapshot(null);
                        String message = "Captured "+image.length+" bytes of JPG data";
                        debug(message);

                        FileConnection conn = (FileConnection)Connector.open("file:///store/home/user/pictures/"+(new Date()).getTime()+".jpg", Connector.READ_WRITE);
                        conn.create();
                        OutputStream out = conn.openOutputStream();
                        out.write(image);
                        out.flush();
                        out.close();
                        conn.close();                           

                        Dialog.alert(message);
                }
                catch (Exception e) {
                        Dialog.alert("Capture failed due to: "+e.getMessage());
                }
0 голосов
/ 30 декабря 2011

Если вы хотите сохранить изображения в вашем Project / res или Project / src во время выполнения, вы не можете этого сделать.

Вы можете сохранить изображение на SD-карте / устройстве.

Почему вы хотите сохранить его в исходном коде вашего проекта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...