|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
[JAVA] -Immagine da array di byte
Come si fa a creare in java un immagine a partire da un array di byte ? E a salvarla poi su un file ?
grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Pensi di creare una cptcha?
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
esatto
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Dovresti specificare meglio: array di byte che contiene cosa?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Perche risolvere 2 volte lo stesso problema?
Codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" %> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <META name="GENERATOR" content="IBM WebSphere Studio"> <TITLE></TITLE> </HEAD> <BODY> <br><br><br><br> <% String c= (String)session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY) ; String parm = (String) request.getParameter("captchafield"); out.println(parm + " ? " + c + ":"); if (c != null && parm != null) { if (c.equals(parm)) { out.println("<b>true</b>"); }else { out.println("<b>false</b>"); } } %> <table> <tr> <td><img src="Captcha.jpg"> </td> <td valign="top"> <form> <br><input type="text" name="captchafield"><br> <INPUT type="submit" name="submit"> </form> </td> </tr> </table> </BODY> </HTML> Codice:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app id="WebApp"> <display-name>captcha</display-name> <servlet> <servlet-name>SimpleCaptcha</servlet-name> <display-name>SimpleCaptcha</display-name> <servlet-class>nl.captcha.servlet.SimpleCaptcha</servlet-class> </servlet> <servlet-name>Captcha</servlet-name> <display-name>Captcha</display-name> <servlet-class>nl.captcha.servlet.CaptchaServlet</servlet-class> <servlet> <servlet-name>Captcha</servlet-name> <display-name>Captcha</display-name> <servlet-class>nl.captcha.servlet.CaptchaServlet</servlet-class> <!--border around captcha. Legal values are yes or no. Defaults to yes Other values will be ignored--> <init-param> <param-name>cap.border</param-name> <param-value>yes</param-value> </init-param> <!--color of the border. Legal values are r,g,b(and optional alpaha) or white,black,etc. Other values will be ignored--> <init-param> <param-name>cap.border.c</param-name> <param-value>black</param-value> </init-param> <!--thickness of the border around captcha. Legal values are > 0 other values will be ignored. Defaults to one--> <init-param> <param-name>cap.border.th</param-name> <param-value>1</param-value> </init-param> <init-param> <param-name>cap.obscurificator</param-name> <!--<param-value>nl.captcha.obscurity.imp.ShadowGimpyImp</param-value>--> <!--<param-value>nl.captcha.obscurity.imp.WaterRiple</param-value>--> <param-value>nl.captcha.sandbox.TestGimpyImp</param-value> </init-param> <init-param> <param-name>cap.cap.producer</param-name> <param-value>nl.captcha.obscurity.DefaultCaptchaIml</param-value> </init-param> <init-param> <param-name>cap.word.imp</param-name> <param-value>nl.captcha.text.imp.DefaultWordRenderer</param-value> </init-param> <init-param> <param-name>cap.text.producer</param-name> <!--<param-value>nl.captcha.sandbox.ChineseTextProducer</param-value>--> <param-value>nl.captcha.text.imp.FiveLetterFirstNameTextCreator</param-value> </init-param> <init-param> <param-name>cap.char.arr</param-name> <param-value>2,3,4,6,7,8,a,b,c,d,e,f,g,h,k,o,r,s,t,x,y</param-value> </init-param> <!--if default captcha producer is slelected this value represents the amount of chars that are supplied in the captcha. values below 2 are not exepted when omitted defaults to 5--> <init-param> <param-name>cap.char.arr.l</param-name> <param-value>6</param-value> </init-param> <init-param> <param-name>cap.font.arr</param-name> <param-value>Arial,Helvetica,Courier,TimesRoman</param-value> </init-param> <init-param> <param-name>cap.font.size</param-name> <param-value>40</param-value> </init-param> <init-param> <param-name>cap.font.color</param-name> <param-value>166,31,255</param-value> </init-param> <init-param> <param-name>cap.bg.imp</param-name> <param-value>nl.captcha.obscurity.imp.DefaultBackgroundImp</param-value> </init-param> <!--values can be either red,yellow,blue,cya etc or r,g,b,alpha value--> <init-param> <param-name>cap.background.c.to</param-name> <param-value>255,255,255</param-value> </init-param> <init-param> <param-name>cap.background.c.from</param-name> <param-value>75,75,255</param-value> </init-param> <init-param> <param-name>cap.noise.imp</param-name> <param-value>nl.captcha.obscurity.imp.DefaultNoiseImp</param-value> </init-param> <init-param> <param-name>cap.noise.c</param-name> <param-value>166,31,255</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SimpleCaptcha</servlet-name> <url-pattern>/SimpleCaptcha.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Captcha</servlet-name> <url-pattern>/Captcha.jpg</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
isAlreadyInUse ti ringrazio ma io devo generare l'immagine tramite una action e poi passarla a una JSP.
Ho una cosa di questo tipo nella Action Codice PHP:
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Se usi Struts e vuoi qualcosa di gia fatto dai un occhio a questo
http://forge.octo.com/jcaptcha/confl...ts+integration |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se l'array di byte contiene i dati dell'immagine in formato Jpeg per salvare l'immagine su file... salvi l'array di byte. Per intenderci, è già un file jpg, solo che è in memoria anzichè su disco.
Per ottenere un'immagine Java dall'array di byte (sempre contenente i dati in formato jpg) fai l'inverso di quello che avresti dovuto fare per ottenere l'array di byte: BufferedImage image = ImageIO.read(new ByteArrayInputStream(data));
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Quindi image è la mia immagine in JPEG ?
Se volessi salvarla su file ? |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Se vuoi salvare un BufferedImage basta dire (ad esempio):
ImageIO.write(image, "jpg", new File("c:\\immagine.jpg")); Il metodo write rilascia un'eccezione di IO nel caso in cui qualcosa vada storto. Tieni comunque conto che l'array di byte: captchaChallengeAsJpeg è già il contenuto di un "file jpg". Quindi puoi saltare la conversione-riconversione e scrivere direttamente su un file il contenuto di captchaChallengeAsJpeg. Codice:
ByteBuffer data = ByteBuffer.wrap(captchaChallengeAsJpeg); FileChannel out = new FileOutputStream("c:\\immagine.jpg").getChannel(); try { while(data.hasRemaining()) { out.write(data); } } finally { out.close(); } BufferedImage image = ImageIO.read(new ByteArrayInputStream(iByteJpg)); "image" non è propriamente la tua immagine jpg ma è l'immagine Java che risulta dall'interpretazione dei byte che, incindentalmente, sono quelli di un'immagine jpg. A parte questo "incidente", non c'è una correlazione tra il formato jpeg e BufferedImage. Tant'è che iByteJpg potrebbe benissimo essere in formato png, bmp o gif.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! Ultima modifica di PGI-Bis : 13-09-2007 alle 15:07. |
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Ok grazie a tutti ora sono riuscito a salvare l'immagine su file ma non riesco a visualizzarla nella pagina JSP
Uso questo comando dove sbaglio ? <html:img src="C:\\captcha.jpg"/> Dove sbaglio ? |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Dovresti usare un percorso relativo
|
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
No effettivamente l'immagine era in c: ma il sistema inseriva un
/nomeapplicazione quindi avevo nell'html /nomeapplicazionec:\\capatcha.jpg che chiaramente non funzionava. Grazie |
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Un ultimo problema (spero) da risolvere :
Ho la LoginAction e la CaptchaAction in cui verifico la correttezza della stringa inserita. Come faccio a passare alla CaptchaAction l'idutente ? ![]() Nel mio caso l'idutente è una proprieta dell'actionform LoginForm |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:59.