• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 334
  • Last Modified:

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);
0
bbdriver
Asked:
bbdriver
  • 10
  • 8
1 Solution
 
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
 
objectsCommented:
none that I'm aware of.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
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
 
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:
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

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 10
  • 8
Tackle projects and never again get stuck behind a technical roadblock.
Join Now