【问题标题】:Why is part of the image cut out when taking a picture with this code on Blackberry?为什么在黑莓上使用此代码拍照时图像的一部分被剪掉了?
【发布时间】:2011-09-12 22:55:28
【问题描述】:

当我在模拟器上拍照时(还没有尝试过设备),结果只有不到一半的图像,其余的都是灰色的。有谁知道为什么? 谢谢

listener = new FileSystemJournalListener()
    {
        private long _lastUSN;
        public void fileJournalChanged()
        {

            long nextUSN = FileSystemJournal.getNextUSN();
            FileSystemJournalEntry entry =           FileSystemJournal.getEntry(nextUSN - 1);
            nextUSN++;
            switch (entry.getEvent()) {
            case FileSystemJournalEntry.FILE_ADDED:

                 try
                {
                    FileConnection fconn = (FileConnection)Connector.open("file://" +entry.getPath());

                    if(fconn.exists())
                    {



                    InputStream input = null;
                        input = fconn.openInputStream();
                        byte[] data = new byte[(int) fconn.fileSize() + 1000];

                        input.read(data);
                        rawImage = data;
                     pic = Bitmap.createBitmapFromBytes(data, 0, -1, 1);
                        if(input != null)
                        {
                        input.close();
                        }




                      Bitmap[] images = new Bitmap[1];
                       images[0] = pic;

                        //labels[1] = "Label for image 2";
                     //   tooltips[1] = "Tooltip for image 2";

                      //  labels[2] = "Label for image 2";
                       // tooltips[2] = "Tooltip for image 2";

                        ScrollEntry[] entries = new ScrollEntry[images.length];

                             entries[0] = new ScrollEntry(images[0], "", "");


                        PictureScrollField pictureScrollField = new PictureScrollField(175, 131);
                        pictureScrollField.setData(entries, 0);
                        pictureScrollField.setHighlightStyle(HighlightStyle.ILLUMINATE_WITH_SHRINK_LENS);
                       // pictureScrollField.setHighlightBorderColor(Color.BLUE);

                       pictureScrollField.setBackground(BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 150));



                        insert(pictureScrollField, 1); 
                        picTaken = true;
                        EventInjector.KeyEvent inject = new EventInjector.KeyEvent(EventInjector.KeyEvent.KEY_DOWN, Characters.ESCAPE, 0, 50);                      
                        inject.post();                      
                        inject.post();
                    }   

                break;
                }    
                     catch (Exception e)
                        {
                            // TODO Auto-generated catch block
                            Dialog.alert(e.toString());
                        }   
                //either a picture was taken or a picture was added to the BlackBerry device 


            case FileSystemJournalEntry.FILE_DELETED:
                //a picture was removed from the BlackBerry device;
                break;
            }

【问题讨论】:

    标签: image blackberry camera


    【解决方案1】:

    input.read(data) 只读取一些数据,而不是全部。如果您想读取整个文件,请改用IOUtilities.streamToBytes(input);,如下所示:

    byte[] data = IOUtilities.streamToBytes(input);

    【讨论】:

      【解决方案2】:
      byte[] data = new byte[(int) fconn.fileSize() + 1000];
      ...
      pic = Bitmap.createBitmapFromBytes(data, 0, -1, 1);
      

      我认为data 现在包含最后错误的 1000 个字节,请尝试更改为:

      byte[] data = new byte[(int) fconn.fileSize()];
      

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。只需使用:

        synchronized(UiApplication.getEventLock()) {
            //your code here
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-03
          • 1970-01-01
          • 1970-01-01
          • 2013-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多