Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-05-2008, 22:21   #1
mone.java
Senior Member
 
L'Avatar di mone.java
 
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
[Java]Ottimizzare ridimensionamento e scrittura immagini

Ciao, sto facendo un programma che richiede il caricamento di molte immagini le quali vengono ridimensionate e successivamente scritte sull'hardDisk, il problema è che quando vado a disegnare l'immagine ridimensionata all'interno di una BuffredImage, con immagini grandi (macchina fotografica) , ci mette 1,5 - 2 secondi che moltiplicati per molte immagini risultano essere molti .
Esiste un modo per ottimizzare in maniera significativa il procedimento ?? Se si quale.

posto il codice del metodo che carica le immagini evidenziando il punto critico:
p.s. (per avere una panoramica competa del programma e i codici sorgenti completi potete guardare una discussione con un'altra domanda relativa al programma: http://www.hwupgrade.it/forum/showth...6#post22374136)

Codice:
/** 
	 * Carica l'immagine corrispondente al file preso come parametro e la ottimizza
	 * per il computer in uso (GraphicsConfiguration gc ==> gc.createCompatibleImage)
	 * 
     *
     * @param path: e l'indirizzo nel quale si trova l'mmagine da "catturare"
     * @param write: determina se il file è da scrivere su disco
     * @param game: istanza del Main
     * @return l'immagine che si vuole caricare rimpicciolita e ottimizzata
	 */
	public static Image loadImage(File img, boolean write,Main game) {
		/* Creo un'immagine bufferizzata vuota */
		BufferedImage sourceImage = null;
		
		try{
			/* Associo all'immagine bufferizzata un'immagine presa da url */
			sourceImage = ImageIO.read(img);
			} catch (IOException e) {
				System.out.println("Impossibile leggere l'immagine "+img.getName());
				return null;
			}
		
		/* Creo un'immagine accellerata della giusta dimensione per caricarci dentro la nostra */
		GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
		Image image = gc.createCompatibleImage(sourceImage.getWidth(),sourceImage.getHeight());
		
		/* Disegno l'immagine all'interno dell'imagine accellerata*/
		image.getGraphics().drawImage(sourceImage,0,0,null);
	
		
		
		// se l'immagine non è della grandezza giusta viene ridimensionata
		if(write&&(image.getWidth(null)!=156||image.getHeight(null)!=117))
			image = sourceImage.getScaledInstance(156,117,Image.SCALE_AREA_AVERAGING);
		
		System.out.println();
		System.out.println("Caricamento "+img.getName());
		long bu = System.currentTimeMillis();
		//scrivo l'immagine nella cartella immagini 
		if(write)
			try {
				System.out.println("1-"+(System.currentTimeMillis()-bu));
				sourceImage = gc.createCompatibleImage(156,117);
				System.out.println("2-"+(System.currentTimeMillis()-bu));
				sourceImage.getGraphics().drawImage(image, 0, 0, null);
		    	System.out.println("3-"+(System.currentTimeMillis()-bu));
				String pathLocale = game.getClass().getClassLoader().getResource("").getFile()+"/"+"Immagini";
				img = new File(pathLocale+"/"+img.getName());
				if(img.exists()) { //se l'immagine esiste già
					String[] options = {"Sovrascrivi","Rinomina","Salta"};
					int opt = JOptionPane.showOptionDialog(game, 
                             img.getName()+" esista già nella cartella immagini, sovrascriverlo, salvare l'mmagine con" +
                              		        "\n un nome diverso o andare avanti senza fare nulla?",
                                            "Sovrascrivere immagine?", JOptionPane.YES_NO_CANCEL_OPTION,
                                            JOptionPane.QUESTION_MESSAGE, new ImageIcon(image),options, options[1]);
					if(opt == JOptionPane.YES_OPTION) //sovrascrivo 
						ImageIO.write(sourceImage, "jpg", img);
					else if(opt == JOptionPane.NO_OPTION) //salvo con nome diverso
						ImageIO.write(sourceImage, "jpg", new File(img.getParent()+"*"+img.getName()));
					
				} else{
			        
					ImageIO.write(sourceImage, "jpg", img);
				}
				
				System.out.println("4-"+(System.currentTimeMillis()-bu));
				return null;
			} catch (IOException e) {
				System.out.println("Impossibile scrivere l'immagine "+img.getName());
			}
		return image;		
	}
Ciao e grazie in anticipo!!!!

Ultima modifica di mone.java : 12-05-2008 alle 11:10.
mone.java è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2008, 11:18   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ciao money.java, vorrei aiutarti ma nello specifico non conosco nulla di preciso sulla manipolazione delle immagini in Java.

Però visto che nessuno ti ha scritto nulla mi azzardo almeno a indicarti delle possibili fonti per "saperne si più", sperando che ti tornino utili in qualche modo.

Il materiale è tutto in inglese (spero tu sia in grado di leggerlo agevolmente).

1) blog di Chet Haase, un ingegnere della Sun che si occupa di grafica. Trovi, a parte il link che ti posto qui, molti altri spunti utili (anche sui problemi legati alle immagini in Java)
-> Chet Haase's Blog: ToolkitBufferedVolatileManagedImage Strategies

2)
-> AWT Image Scaling API

3) Un post del Developer Forum della Sun:
-> Java 2D - How to Scale RenderedImage with good Quatily.

4)
-> A comparison of Java image thumbnailing techniques

Ciao
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2008, 12:08   #3
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Controlla anche qui: http://rsb.info.nih.gov/ij/
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2008, 12:49   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Controlla anche qui: http://rsb.info.nih.gov/ij/
Molto interessante, è OpenSource e ci sono anche i sorgenti scaricabili, sia in formato "tradizionale" che in formato "java2html" molto comodo per leggerli.

Grazie Don[ITA]
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2008, 14:06   #5
mone.java
Senior Member
 
L'Avatar di mone.java
 
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Controlla anche qui: http://rsb.info.nih.gov/ij/
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ciao money.java, vorrei aiutarti ma nello specifico non conosco nulla di preciso sulla manipolazione delle immagini in Java.

Però visto che nessuno ti ha scritto nulla mi azzardo almeno a indicarti delle possibili fonti per "saperne si più", sperando che ti tornino utili in qualche modo.

Il materiale è tutto in inglese (spero tu sia in grado di leggerlo agevolmente).

1) blog di Chet Haase, un ingegnere della Sun che si occupa di grafica. Trovi, a parte il link che ti posto qui, molti altri spunti utili (anche sui problemi legati alle immagini in Java)
-> Chet Haase's Blog: ToolkitBufferedVolatileManagedImage Strategies

2)
-> AWT Image Scaling API

3) Un post del Developer Forum della Sun:
-> Java 2D - How to Scale RenderedImage with good Quatily.

4)
-> A comparison of Java image thumbnailing techniques

Ciao
Grazie per l'aiuto adesso proverò a fare delle prove e ovviamente se raggiungerò qualche risultato non esiterò a farvelo vedere.
Ciao Grazie!!
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza"
mone.java è offline   Rispondi citando il messaggio o parte di esso
Old 12-05-2008, 14:17   #6
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Molto interessante, è OpenSource e ci sono anche i sorgenti scaricabili, sia in formato "tradizionale" che in formato "java2html" molto comodo per leggerli.

Grazie Don[ITA]
Figurati
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2008, 08:17   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Figurati
A proposito: ma come cavolo li sgamate certi link?


@EDIT:
grazie, Java Tips già lo conoscevo, ma quella particolare pagina di java.net no, bookmarkata

Ultima modifica di banryu79 : 13-05-2008 alle 11:07.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2008, 11:04   #8
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Guarda io la maggior parte delle cose di java le trovo o sul forum della sun oppure qui o qui. Per il resto googleggio e di solito trovo quello che cerco .

Ciauz
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2008, 16:21   #9
mone.java
Senior Member
 
L'Avatar di mone.java
 
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
Se non lo sapete ora nelle cose di google labs esiste un motore di ricerca per i codici sorgenti, provate a darci un'occhiata (sinceramente non l'ho mai usato...)
Ciao
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza"
mone.java è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Space Pioneer starebbe realizzando un pr...
SpaceX ritirerà ''a breve'' il Fa...
La Luna ha un nuovo cratere di grandi di...
ROG Cronox: ASUS alza l'asticella dei ca...
Lenovo annuncia nuovi sistemi per la vir...
M6 e M5 Ultra, i primi benchmark conferm...
La nuova falla della cybersecurity &egra...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
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: 20:32.


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