Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Astro A50 Gen 5 dopo 6 mesi: sono davvero le migliori? Si poteva fare di più
Astro A50 Gen 5 dopo 6 mesi: sono davvero le migliori? Si poteva fare di più
Sono ormai sei mesi circa che utilizzo le Astro A50 come headset quotidiano per contenuti multimediali, musica e gaming ed è arrivato il momento di tirare le somme su quello che è un headset top di gamma con caratteristiche effettivamente ai vertici della categoria, ma che in questo lasso di tempo si è macchiato (anche in senso letterale) di alcune scelte fatte da Logitech non proprio ottimali
AMD Advancing AI 2025: le nuove GPU per l'intelligenza artificiale
AMD Advancing AI 2025: le nuove GPU per l'intelligenza artificiale
La domanda di nuove soluzioni hardware per gestire le elaborazioni legate all'intelligenza artificiale sta diventando sempre più pressante: AMD annuncia nuove GPU della famiglia Instinct MI350, mostrando anche quelle che saranno le innovazioni previste nel 2026 per quanto riguarda GPU, CPU e networking nei datacenter. A collegare il tutto ROCm 7, anello di congiunzione tra le componenti hardware e il lavoro degli sviluppatori
Fujifilm X half: 'Ritorno al Futuro Analogico'
Fujifilm X half: 'Ritorno al Futuro Analogico'
Quest'anno Fujifilm ha messo sul piatto due delle fotocamere più discusse del 2025. Una l'abbiamo vista qualche tempo fa, è GFX100RF, ossia la medio formato compatta con ottica fissa. E l'altra è questa qui, è Fujifilm X Half che si pone all'altro estremo. È una fotocamera super compatta, sempre a ottica fissa, sempre con otturatore centrale, ma è in questo caso caratterizzata da un sensore verticale in formato da un pollice. La sua particolarità è la modalità 'pellicola' che non vi permette di vedere le foto scattate fino a che non avete sviluppato tutto il rullino virtuale. Ha senso questo Ritorno al Futuro Analogico?
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2007, 14:21   #1
spillo491
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
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:23   #2
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
Pensi di creare una cptcha?
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:26   #3
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
esatto
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:27   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da spillo491 Guarda i messaggi
Come si fa a creare in java un immagine a partire da un array di byte ? E a salvarla poi su un file ?
Dovresti specificare meglio: array di byte che contiene cosa?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:29   #5
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
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>
e questo è il web.xml

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>
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:35   #6
spillo491
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:
byte[] captchaChallengeAsJpeg null;
        
                    
// L'output stream che ci serve per renderizzare l'immagine Captcha in una JPEG
                    // RENDERING = generazione di un'immagine a partire da una descrizione matematica
                    //             di una scena tridimensionale
                    
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
                    
                    try {
                    
// Prendiamo l'id di sessione che utilizzeremo per generare l'immagine captcha. 
                    // Lo stesso id sarà utilizzato per validare la risposta
                    
String captchaId request.getSession().getId();
                        
BufferedImage challenge CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaIdrequest.getLocale());
               
                        
// L'encoder JPEG
                        
JPEGImageEncoder jpegEncoder JPEGCodec.createJPEGEncoder(jpegOutputStream);
                        
jpegEncoder.encode(challenge);
                    } 
                    catch (
IllegalArgumentException e) {
                        return 
mapping.findForward"error" );
                    } 
                    catch (
CaptchaServiceException e) {
                        return 
mapping.findForward"error" );
                    }
            
                
// ho un array di byte
                    
captchaChallengeAsJpeg jpegOutputStream.toByteArray(); 
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:46   #7
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
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
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:54   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
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!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 14:58   #9
spillo491
Member
 
Iscritto dal: Dec 2006
Messaggi: 201
Quindi image è la mia immagine in JPEG ?
Se volessi salvarla su file ?
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 15:05   #10
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
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();
}
PS: quando fai:

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.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 16:26   #11
spillo491
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 ?
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 16:48   #12
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
Dovresti usare un percorso relativo
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 19:16   #13
spillo491
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
spillo491 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 15:46   #14
spillo491
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
spillo491 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Astro A50 Gen 5 dopo 6 mesi: sono davvero le migliori? Si poteva fare di più Astro A50 Gen 5 dopo 6 mesi: sono davvero le mig...
AMD Advancing AI 2025: le nuove GPU per l'intelligenza artificiale AMD Advancing AI 2025: le nuove GPU per l'intell...
Fujifilm X half: 'Ritorno al Futuro Analogico' Fujifilm X half: 'Ritorno al Futuro Analogico'
Recensione Edge 60 Pro: la fascia medio-alta che ci piace Recensione Edge 60 Pro: la fascia medio-alta che...
L'innovazione in Europa è a un bivio. Ne parliamo con Plug and Play L'innovazione in Europa è a un bivio. Ne ...
Il miglior videogioco italiano del 2025?...
Nessuno le usava: Google elimina le Inst...
Svizzera, presto una legge per garantire...
Tutte le offerte tecnologiche del weeken...
A partire da 149€ fino ai top di gamma: ...
Venezia in rivolta contro il matrimonio ...
Offerte imperdibili Amazon: il tuo pross...
Una action cam da urlo a un prezzo da no...
Sony WH-1000XM4 a prezzo shock su Amazon...
DREAME X50 Ultra Complete scende al mini...
Motorola Edge 60 a meno di 290€ su Amazo...
Ford ora produce le batterie di Explorer...
Offerta Amazon: iPad con chip A16 Bionic...
Il tuo Mac è un PC da gaming? Ecc...
La Germania ama le pompe di calore: ci s...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v