Read Image - JavaME

What other api can i use to create images beside createimage? I am using Blackberry and J2ME.

Image image = Image.createImage(input);
bbdriverAsked:
Who is Participating?
 
bbdriverAuthor Commented:
Hi.. i think i got it. I have changed Image image = Image.createImage(input); to byte[] b3=str.getBytes();
                                                Image image = Image.createImage(b3, 0, 0);

And it works now. I think there are is some issue with just create image with input stream.
0
 
objectsCommented:
what problem are you having with createImage()?
Whats 'input'?
0
 
bbdriverAuthor Commented:
input is InputStream input = filenames.openInputStream();      

I have a set of images, when i use createImage(), it either returns the created image or throws IOException, Exception. But there are some images that doesn't go anywhere. I thought there might be other api that i can try out.
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
objectsCommented:
none that I'm aware of.
0
 
bbdriverAuthor Commented:
Do you have any idea why the program will stop when i try to use createImage() without throwing any exception?
0
 
bbdriverAuthor Commented:
I am able to open it in phone imageviewer but it can't be processed using my program.
0
 
objectsCommented:
could be a deadlock, hard to say without see your code
0
 
bbdriverAuthor Commented:
This is the code.

FileConnection filenames = (FileConnection)Connector.open(main_directory +  "testFolder" + "/"
                                                + imageName ,Connector.READ);
if (filenames.exists()) { InputStream input = filenames.openInputStream();      
try {      Image image = Image.createImage(input);            
if(image != null){               
                                                      updateContent("READING: " + imageName);
                                                }
                                                else continue;                  
                                          }
                              
                                          catch (IOException e) {                                                
                                                updateContent("READING: " + imageName);                                                

                                          } catch (Exception e)  {
                                                updateContent("READING: " + imageName);      

                                          }
                                          input.close();      
                                    }
                                    filenames.close();
0
 
bbdriverAuthor Commented:
public void image()
            { for(;;)
                  {
                        String content = "", description = null, Exceptiondescription=null;
                        JSONObject outer = new JSONObject();            

                        try{
                              FileConnection fc = (FileConnection)Connector.open(main_directory + imageFolder + "/");
                              FileConnection file = (FileConnection)Connector.open(main_directory + imageFolder + ".json" ,Connector.READ_WRITE);                              
                              if(!file.exists()) { file.create(); }
                              file.setWritable(true);
                              OutputStream out = file.openOutputStream();
                              Enumeration filelist = fc.list("*", true);
                              while(filelist.hasMoreElements()) {
                                    imageName = (String) filelist.nextElement();
                                    FileConnection filenames = (FileConnection)Connector.open(main_directory + imageFolder + "/"
                                                + imageName ,Connector.READ);
                                    if (filenames.exists()) {
                                          InputStream input = filenames.openInputStream();      
                                          try {
                                                Image image = Image.createImage(input);
                                                if(image != null){
                                                      toJSON(outer, "OK", "filename:" + imageName);  
                                                }
                                                else continue;                                                
                                          }
                                          catch (IOException e) {
                                                description = e.toString();
                                                toJSON(outer,"Caught IOException:" + description, "filename:" + imageName);
                                                

                                          } catch (Exception e)  {
                                                Exceptiondescription = e.toString();
                                                toJSON(outer, " Caught Exception:" + Exceptiondescription, "filename:" + imageName);
                                          }                                    
                                          input.close();      
                                    }
                                    filenames.close();
                              }      
                              file.close();
                              fc.close();
                              out.write(outer.toString().getBytes());
                              out.flush();
                              out.close();                                          
                              updateContent("READING: " + "COMPLETED");                   
                        }                                          
                        catch (IOCancelledException e)
                        {
                              System.out.println(e.toString());
                              return;
                        }
                        catch (IOException e)
                        {
                              errorDialog("IO EXCEPTION: " + e.toString());
                              return;
                        }      
                        catch(Exception e){
                              errorDialog("EXCEPTION" + e.toString() );
                        }                  
                  }
            }
0
 
bbdriverAuthor Commented:
I am not sure if it's deadlock. It doesn't look like it.
0
 
objectsCommented:
you repeatedly read the same directory
and if you get an exception you don't close the connections or streams
not sure if thats the cause but worth fixing up
0
 
bbdriverAuthor Commented:
Does it mean that each time I get an exception, i will have to close the connection? Cause, if i close the connection, i wont be able to continue reading the next image file.
0
 
objectsCommented:
If you get an exception, you try and open the connection again
0
 
bbdriverAuthor Commented:
I have tried that and got FileIOException,

I am  trying this..


try {
                                                updateContent("" + input);
                                                Logger.logEventInfo("READING1: " + imageName);
                                                Image image = Image.createImage(input);            
                                                Logger.logEventInfo("READING2: " + imageName);
                                                if(image != null){

                                                      updateContent("READING3: " + imageName);
                                                      toJSON(outer, "OK", "filename:" + imageName);
                                                }
                                                else continue;                                
                                          }                              
                                          catch (IOException e) {
                                          description = e.toString();
                                                updateContent("READING: " + imageName);
                                                Logger.logEventInfo("READING4: " + imageName +"\n");
                                                toJSON(outer, "Caught IOException:" + description, "filename:" + imageName);
                                                
                                          } catch (Exception e)  {

                                                Exceptiondescription = e.toString();
                                                updateContent("READING: " + imageName);      
                                                Logger.logEventInfo("READING5: " + imageName);
                                                toJSON(outer," Caught Exception:" + Exceptiondescription, "filename:" + imageName);
                                          }      
                                          input.close();      
                                    }
                                    filenames.close();


This is what I have in print statement. And when it reach to image3, it will stop.

I: List of files and directories under SD CARD:
I: READING1: image1.jpg
I: READING2: image1.jpg
I: READING1: image2.jpg
I: READING4: image2.jpg
I: READING1: image3.jpg
0
 
objectsCommented:
log details of the exception to help determine why an exception  is occurring

are you sure it hung and that that it isn't just exitting the method?
0
 
bbdriverAuthor Commented:
I don't think it's exiting the method. How do I log the detail of exception?
0
 
objectsCommented:
> I don't think it's exiting the method.

add some logging to check

> How do I log the detail of exception?

log the exception including preferably the stack trace
0
 
objectsCommented:
may have been a problem with the input stream,
0
 
Kevin CrossChief Technology OfficerCommented:
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.