|
|||||||
|
|
|
![]() |
|
|
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 16: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: 23:31.





















