In questo post spiego come accedere ad una risorsa, ad esempio un’immagine, da un agente java senza che questo file sia stato prima salvato sul file system.
L’agente è stato testato su un client lotus 8.5.x
- Crea un agente java
- Importa un’immagine come risorsa utilizzando il pulsante Import -> Resource
- Modifica la classe JavaAgent:
123456789101112131415161718192021222324252627282930313233import lotus.domino.*;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.File;import java.io.InputStream;import javax.imageio.ImageIO;import org.apache.commons.io.IOUtils;public class JavaAgent extends AgentBase {public void NotesMain() {try {Session session = getSession();AgentContext agentContext = session.getAgentContext();// (Your code goes here)// first example: from image resource to bytes// you need org.apache.commons.io.IOUtilsInputStream is = getClass().getClassLoader().getResourceAsStream("myPicture.jpg");byte[] bytes = IOUtils.toByteArray(is);// second example: from image resource to fileInputStream in = (ByteArrayInputStream)getClass().getClassLoader().getResourceAsStream("myPicture.jpg");BufferedImage img = ImageIO.read(in);ImageIO.write(img, "jpg", new File("c:\\myPicture.jpg"));} catch(Exception e) {e.printStackTrace();}}
Nel primo esempio l’immagine è trasformata in bytes (per questo è necessario l’import org.apache.commons.io.IOUtils e quindi anche l’importazione del relativo file .jar sotto Archive)
Nel secondo esempio l’immagine è salvata su disco
Can you load an image added as an image resource inside the nsf directly?
This code doesn’t work with image resource inside the nsf directly.
Maybe you can see this example.